问题描述

功能需求:拍照或选择图片,然后跳转页面裁剪上传头像;一开始使用 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}`
    })
  },
})
兼容性问题

不支持的用户群体太少了,而且手机版本这么低的用户应该也不会使用到本小程序吧~~。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐