收藏
回答

小程序版本库3.4.10,选择PNG图片结果被转换为jpg格式

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.chooseMedia(Object object) 微信安卓客户端 8.0.50 3.4.10

https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseMedia.html


这个API在3.4.10版本以后,用户选择png格式的图片(原图),但是api回调时返回的是jpg格式,强制转换了用户的png图片为jpg格式。

回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员-Jahozheng
    社区技术运营专员-Jahozheng
    07-11

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    07-11
    有用
    回复 9
    • 无我
      无我
      07-14
      https://developers.weixin.qq.com/s/QXCa2Gmw7HS6
      07-14
      回复
    • 无我
      无我
      07-14
      代码片段 , 需要配合指定版本复现
      07-14
      回复
    • c.n.
      c.n.
      07-15
      解决了吗,遇到了同样的问题
      07-15
      回复
    • 夏味
      夏味
      07-16
      保存图片也有问题,安卓的 png 图片,保存后被转换为 jpg 了
      07-16
      回复
    • 社区技术运营专员-Jahozheng
      社区技术运营专员-Jahozheng
      07-16回复无我
      目前安卓端传输图片会压缩一下导致图片格式转换 如果不想图片转换格式可以先打包成zip在发送
      07-16
      回复
    查看更多(4)
  • 无我
    无我
    07-22

    我这边已经绕过这个问题了,一开始我打算用获取图片信息的API去判断图片的格式,然后直接修改图片的后缀名,这样做虽然可以把图片变为PNG格式,但是后面上传到云端时,小程序因为修改了后缀名的原因,所以会找不到文件路径,从而报错。

    目前解决的方法是:

    1 获取用户的图片

    2 获取图片的信息 wx.getImageInfo

    这个是可以判断图片是不是PNG格式的,

    3 过滤掉不需要的图片格式,过滤掉超出大小的图

    4 将过滤完的图片先传到阿里云的OSS

    5 通过阿里云的OSS获取图片格式与图片的尺寸等信息

    6 通过阿里云的OSS信息,再过滤掉不合适的图片信息

    7 用阿里云的OSS将图片格式进行转换

    ?x-oss-process=image/format,png

    07-22
    有用
    回复 3
    • 无我
      无我
      07-22
      还有一种办法就是调用微信聊天记录的api(wx.chooseMessageFile)这个API获取到的PNG图片是没有被转为JPG格式的,但是这样并不优雅。
      07-22
      回复
    • 夏味
      夏味
      07-22
      不只是格式的问题,png 要传原图,转换 jpg 后已经压缩了。而且透明的相关信息丢了,你再转换回来,透明底都变成白底了。
      07-22
      回复
    • 橙
      09-11
      找到办法了吗
      09-11
      回复
登录 后发表内容