问题描述
功能需求:拍照或选择图片,然后跳转页面裁剪上传头像;一开始使用 chooseImage
本人的小小安卓机和测试的ios手机都是没有问题的,后来同事的 iphone 13 mini 一试拍照跳转页面就崩溃了。
一开始一筹莫展还在各处搜问题,查看了很多帖子发现 chooseImage
的调用相机挺吃内存的,而ios调用的是手机的相机,所以就更吃内存了,然后再跳转页面就很容易崩溃;后来尝试等个一秒再跳转页面,或者跳转页面再调用该api,虽然能解决问题但感觉效果都不太好。
解决方法
由于我是采用 taro
来开发小程序的文档那里没看到什么信息,后来查看微信文档才看到救星 chooseMedia
。
https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseMedia.html

chooseMedia
在ios端调用相机是微信的相机不是手机原来的相机,所以不会那么吃内存。就没发生页面崩溃问题了,由于没有更多手机进行测试了,其他内存更低的手机就不清楚会不会还有问题了。
// Taro.chooseImage -- 滚吧您
Taro.chooseMedia({
count: 1,
mediaType: ['image'],
sizeType: ['compressed'], // 压缩图
sourceType: ['album', 'camera'],
success: res => {
console.log('res: ', res);
const src = res.tempFiles[0].tempFilePath
Taro.navigateTo({
url: `/pages/cropper-img/index?src=${src}`
})
},
})
兼容性问题
不支持的用户群体太少了,而且手机版本这么低的用户应该也不会使用到本小程序吧~~。

