- 需求的场景描述(希望解决的问题)
原图上传,图片也会被压缩
在上传图片时,不论是选择压缩图,还是选择原图,上传时都会被小程序的压缩。
我的应用场景是必须保证图片为原始图片,不能被压缩、修改。
- 希望提供的能力
wx.chooseImage接口,提供图片上传参数选项,缩放、转换格式等由开发者自定义,而不是小程序内定的图片压缩。 以确保上传的图片为真真正正的原图!
公众号开发是会有这个问题,不论iOS和Android;
找了一下资料,发现是chooseImage无论选择的是原图还是压缩图,返回的localData都是压缩文件副本;
折中处理方法:
通过wx-API的uploadImage上传到微信服务器,拿到服务器返回的文件serverId,然后通过wx-API的文件下载链接,根据serverId将图片下载到自己服务器;
需要注意access_token前后端避免冲突;
本来和大多数人的想法一样,用getLocalImgData取localData(base64)转化为Blob上传;首先我们写了方法兼容base64作为测试, 结果如下
5MB -> 原图图片
iOS: 1.9MB(不影响质量)
Android: 370KB (严重影响质量)(而且还需要自己加上data:image/jpeg;base64,)
getLocalImgData这个方法不用注册也可以使用(其他:使用config配置appid这些是可以理解,不是很明白为什么很多方法要注册后使用,因为调用方法也是通过事件的机制通知到Native)
测试手机(微信版本7.0.5)
iPhone 7p -> 12.4系统
HUAWEI NOVA -> 7.0
系统这个问题有一年多了吧,始终没有解决。临时解决就是使用uploadImage,传到微信服务器,再拿过来!!!!感觉很没有必要