将图片转换为base64后base64 length问题
发布于 6 年前 作者 ucheng 3899 次浏览 来自 问答

目的:由于setData时最大传输长度不得超过1048576,因此希望在上传base64图片前先将图片大小进行压缩。

问题:使用canvasToTempFilePath后再将图片转换为base64时,base64.length明显大上几倍。


场景:使用chooseImage选择图片后,需要根据图片大小进行判断压缩,压缩方法为调用canvas的drawImage方法重新定义图片大小,保证宽高均在1000以内,再利用canvasToTempFilePath方法得到压缩后的图片。得到压缩图片后,此时调用FileSystemManager.readFile(),encoding为base64的方式读取压缩图片,返回的结果base64 的length明显比调用canvasToTempFilePath前要大几倍。导致压缩图片也没有意义。

2 回复
属性类型默认值是否必填说明支持版本
destWidthnumberwidth*屏幕像素密度输出的图片的宽度>= 1.2.0
destHeightnumberheight*屏幕像素密度输出的图片的高度>= 1.2.0
fileTypestringpng目标文件的类型>= 1.7.0
qualitynumber
图片的质量,目前仅对 jpg 有效。取值范围为 (0, 1],不在范围内时当作 1.0 处理。>= 1.7.0

关注一下 canvasToTempFilePath 的这几个参数,destWidth/destHeight 不设置时,输出大小默认会乘屏幕像素密度;fileType 不指定时,默认值是无损的 png。你可以指定这几个参数再试试?

指定fileType为jpg时有效,非常感谢!

回到顶部