收藏
回答

wx.chooseImage更改为wx.chooseMedia出现bug

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.chooseMedia 微信iOS客户端 8.0.31 2.29.1及其他版本库

实现的功能:调用wx.chooseImage拍照或则相册选择图片,经过wx.compressImage压缩,再利用canvas.getContext('2d')绘画图片,最后wx.canvasToTempFilePath得到图片路径上传服务器

22年12月下旬开始偶尔出现图片上传时导致微信直接闪退的问题,23年1月初开始经常出现闪退,于是便将wx.chooseImage改成wx.chooseMedia。

更改后闪退问题得到解决,安卓手机没有异常,苹果手机出现bug如下:

1、拍照上传图片第一张图经过经过上述压缩、canvas绘画后得到的一张白色空白图片

2、第二次拍照及以后每次拍照经过上述压缩、canvas绘画得到的图片竟是上一次的图片(第二次拍照得到第一次的图片,第三次得到第二次,以此类推)

但是在相册选择的图片经过经过上述压缩、canvas绘画后表现正常

主要看addPicture方法


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

1 个回答

  • 周冉
    周冉
    2023-01-11

    是的,chooseImage方法在部分机型上导入较大图片时会出现假死或闪退崩掉。关于iOS的Canvas绘制白屏的问题,可尝试使用旧版的Canvas组件,不要用type=2d。因为新版Canvas组件画不了太大的图片,长宽最高也就4000左右,太大的图绘制不出来,可能就是白的,或者还是上一张图。

    所以经过压缩后可能会正常,你可以看下压缩后的图片的长宽以及大小,找出规律,来调整压缩率。

    2023-01-11
    有用
    回复 1
    • 波波船长
      波波船长
      2023-01-11
      确实,或许调整canvas部分有可能解决,这个问题只有慢慢的试。但是想到以前chooseImage都表现正常,只改了一个chooseMedia,其他代码都没动,就出现bug,所以还是觉得chooseMedia需要优化下
      2023-01-11
      回复
登录 后发表内容