实现的功能:调用wx.chooseImage拍照或则相册选择图片,经过wx.compressImage压缩,再利用canvas.getContext('2d')绘画图片,最后wx.canvasToTempFilePath得到图片路径上传服务器
22年12月下旬开始偶尔出现图片上传时导致微信直接闪退的问题,23年1月初开始经常出现闪退,于是便将wx.chooseImage改成wx.chooseMedia。
更改后闪退问题得到解决,安卓手机没有异常,苹果手机出现bug如下:
1、拍照上传图片第一张图经过经过上述压缩、canvas绘画后得到的一张白色空白图片
2、第二次拍照及以后每次拍照经过上述压缩、canvas绘画得到的图片竟是上一次的图片(第二次拍照得到第一次的图片,第三次得到第二次,以此类推)
但是在相册选择的图片经过经过上述压缩、canvas绘画后表现正常
主要看addPicture方法
是的,chooseImage方法在部分机型上导入较大图片时会出现假死或闪退崩掉。关于iOS的Canvas绘制白屏的问题,可尝试使用旧版的Canvas组件,不要用type=2d。因为新版Canvas组件画不了太大的图片,长宽最高也就4000左右,太大的图绘制不出来,可能就是白的,或者还是上一张图。
所以经过压缩后可能会正常,你可以看下压缩后的图片的长宽以及大小,找出规律,来调整压缩率。