背景
客户是工程机械行业,在做保养、维修的时候需要到施工现场,为了对过程进行跟踪并且满足后续结算需要,要求工作人员现场拍照。由于目前手机摄像头越来越强悍,每张照片基本在4-6M,每单拍摄十张照片,直接导致每天的图片存储量非常大;另外网络不好的情况下照片上传速度也是个问题。
幸好强大的苍穹提供了图片压缩功能,在【系统参数-公共参数-附件配置-图片自动压缩临界值】可以设置图片大小。设置完成之后在图片控件上次照片的时候回压缩到500K之内。
状况
客户部在审单时发现个别照片不清晰,而且出现拼接错位的情况,严重影响了正常工作。
由于是个别照片现场上传出现的问题,暂时无法直接重现,所以在线下测试环境进行了各种不同操作的模拟。
最终发现问题所在:当拍照后上传图片时如有勾选“原图”则不会出现图片失真的问题,而不勾选“原图”则有一定的几率出现图片失真。
分析
我们在测试现场根据不同操作组合进行拍照上传,然后到文件服务将照片下载到本地对比,发现当系统参数不设置图片压缩临界值即系统不压缩时,不勾选“原图”,上传之后的图片会被压缩。那么失真的图片很有可能是被两次压缩之后出现的。
为了验证这个猜想,做了一个测试:
1、取消系统的压缩;
2、拍照上传时不勾选“原图”;拍摄几张不同的场景;
3、在服务器上将上传的照片下载到本地;然后开启系统的图片压缩;
4、将刚才下载的照片上传到系统。
经过以上步骤就发现了问题,部分照片在上传时被压缩之后依然大于500K,那么在此上传的时候平台又将图片压缩了一次将大小压缩到500K以内,导致图片被多次压缩失真。
比如下图手机直接拍摄大小5M,如果不选择系统压缩、不选择上传原图,上传到服务器之后大小为841K。
如果开启了系统压缩并且上传时不勾选原图,那么系统会将841K的图片再次压缩直至499K,就形成了下面第二张图片的样子。
至此已经基本确定了照片失真的原因。
解决
要解决以上问题,要么在拍照之后上传图片时勾选左下角的“原图”,由苍穹对图片进行压缩;要么苍穹不启用图片压缩,每次上传的时候不选择“原图”。
但是由于使用此系统的人员众多而且流动性较强,很难规定所有人必须选或不选原图。
所以我们在测试环境不启用苍穹图片压缩,在不勾选“原图”的情况下上传了很多照片,发现基本都会被压缩到1M以内。那么将系统的“图片自动压缩临界值”设置到1024K,那么如果用户勾选了“原图”,相机拍照基本都会大于1M会触发苍穹的压缩,如果用户没勾选“原图”,首先本地手机会进行第一次压缩,一般不会超过1M就不会触发苍穹的图片压缩。这样就避免了照片被多次压缩失真的情况。
ps:如果选图那个选项能够锁定是最好的方案,期待~~~
推荐阅读