将图片转换为base64后base64 length问题
目的:由于setData时最大传输长度不得超过1048576,因此希望在上传base64图片前先将图片大小进行压缩。
问题:使用canvasToTempFilePath后再将图片转换为base64时,base64.length明显大上几倍。
场景:使用chooseImage选择图片后,需要根据图片大小进行判断压缩,压缩方法为调用canvas的drawImage方法重新定义图片大小,保证宽高均在1000以内,再利用canvasToTempFilePath方法得到压缩后的图片。得到压缩图片后,此时调用FileSystemManager.readFile(),以encoding为base64的方式读取压缩图片,返回的结果base64 的length明显比调用canvasToTempFilePath前要大几倍。导致压缩图片也没有意义。
2 回复
属性 | 类型 | 默认值 | 是否必填 | 说明 | 支持版本 |
---|---|---|---|---|---|
destWidth | number | width*屏幕像素密度 | 否 | 输出的图片的宽度 | >= 1.2.0 |
destHeight | number | height*屏幕像素密度 | 否 | 输出的图片的高度 | >= 1.2.0 |
fileType | string | png | 否 | 目标文件的类型 | >= 1.7.0 |
quality | number | 是 | 图片的质量,目前仅对 jpg 有效。取值范围为 (0, 1],不在范围内时当作 1.0 处理。 | >= 1.7.0 |
关注一下 canvasToTempFilePath 的这几个参数,destWidth/destHeight 不设置时,输出大小默认会乘屏幕像素密度;fileType 不指定时,默认值是无损的 png。你可以指定这几个参数再试试?