问题1:安卓使用真机无法选择原图,微信版本8.0.50
问题2:IOS/安卓选择图片上传后,图片被压缩,IOS选择100M的原图被压缩至5M,安卓选择40M的图片(无原图选项)被压缩至200K
问题3:wx.chooseImage后,使用wx.getLocalImgData获取localData计算大小,通过wx.uploadImage上传到微信服务器得到mediaId
然而,wx.getLocalImgData计算的大小与后端通过mediaId获取到的图片大小不一致
原图40M, wx.getLocalImgData计算为3643826=3.475M,通过mediaId获取的图片大小200K
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: (res) => {
// 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
console.log(res.localIds);
},
cancel: () => {}
});
// 获取base64图片的大小
function getBase64ImageSize(base64String) {
// 移除"data:image/*;base64,"前缀,这个前缀不包含实际的数据
const prefix = /^data:image\/(png|jpg|jpeg);base64,/;
const base64Data = base64String.replace(prefix, "");
// 计算base64字符串的字节长度
const decodedData = atob(base64Data); // 使用atob函数解码base64字符串
const imageSize = decodedData.length; // 获取解码后的字符串长度,即图片大小(字节)
return imageSize;
}
chooseMedia
一样的表现吗?