项目中webView加载了h5页面,照片选择部分由h5自带的文件选择,出现这么一个现象,就是当你选择一张13兆的图片,file.size 可以正常的log出来。当你选择一张20.3兆的图片,log出来的size,只到了不到1兆大小,用safari浏览器加载也是同样的效果。安卓端可以对系统浏览器就行监听,当出现h5的文件选取,可以转向自己的选择照片逻辑,然后对图片进行了判断压缩。
一开始目标钉在了vant的uploader控件上,是不是控件进行了图片压缩,答案是没有。随后有写了h5原生的input 文件选择,结果是一样的。于是各种百度开始了,最后
https://developer.apple.com/forums/thread/656569 这里有了头绪。开始对设备的系统进行分别试,iOS13 iOS 14.1 iOS14.2,实验发现,在新系统iOS14.2上面,选取的图片没有被压缩,拿到了原图大小。
折腾了很长时间,才发现本来可以很快解决的问题,我费了很多的时间。首先,还是经验主义害死人,没有对多个系统进行测试,最初没有感觉到14.1,14.2会出现这种区别。其次,没有对安卓端进行验证,只是听了h5同事说效果是一样的,都有压缩。如果亲自去点一点,可能就会发现安卓端是有处理的。最后还有一个很重要的事,就是问题搜索到最后,耐心不足,在developer forums 随便试了试webview ,h5,Photo album permissions关键字没有结果,就放弃了。 上面的链接是关键词搜索Safari,photo找到的。
上面就是一次问题解决的经历和心得。与你分享!
另外,我还遇到了一个问题:h5通过文件选择标签,就能拿到手机的照片,却不需要向用户申请相册权限,这又怎么解释,iOS原生开发对权限要求这么严格呢?