收藏
回答

将图片转换为base64后base64 length问题

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug canvasToTempFilePath 工具 6.6.3 2.4.0

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

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


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



最后一次编辑于  2018-11-08
回答关注问题邀请回答
收藏

2 个回答

  • 小程序技术专员-SgLy
    小程序技术专员-SgLy
    2018-11-08
    属性类型默认值是否必填说明支持版本
    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。你可以指定这几个参数再试试?

    2018-11-08
    有用
    回复
  • YI
    YI
    2018-11-08

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

    2018-11-08
    有用
    回复
登录 后发表内容