目前的项目图片上传使用的是七牛云上传,由于用户上传图片时有些图片会很大,
所以app端对图片进行了压缩,那么后台还有必要再压缩一次吗?
不需要了,前台可以把一个几兆的东西压缩成几百K,而且 后台可以把前台上传的图片放在服务器里 然后给一个路径 以后就可以直接通过路径访问。
不需要。后台在执行的时候会自动解压
不用再压缩,要是图片比较多,最好选用一个tfs系统来管理
前端完成了图片压缩,后台接数据的时候就跟普通提交数据一样处理即可,不需要再次进行压缩
图片画质不要了吗( ˘•ω•˘ )
检查文件大小是否在规定之内,如果大于规定,还是需要压缩,同时还是检查文件类型,限制上传文件类型是在白名单内的。
其实不需要了,七牛会优化了处理的,而且你们已经处理过一次了。
压缩有两种形式,一个是无损压缩,一个是有损压缩。
如果你压缩了,那么再次无损压缩意义不大,不能有效减少数据。但是还可以有损压缩,有损压缩分为3类:
(1)降低分辨率,产生缩略图
(2)使用jpg一类的压缩算法,牺牲图像质量和色彩
(3)图像剪切,可以把图像转换成固定长宽比例,同时切掉不必要的边缘。
在做移动端图片上传的时候,用户传的都是手机本地图片,而本地图片一般都相对比较大,拿iphone6来说,平时拍很多图片都是一两M的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上传显然不是一个好办法。
目前来说,HTML5的各种新API都在移动端的webkit上得到了较好的 实现。根据查看caniuse,本demo里使用到的FileReader、Blob、Formdata对象均已在大部分移动设备浏览器中得到了实现 (safari6.0+、android 3.0+),所以直接在前端压缩图片,已经成了很多移动端图片上传的必备功能了。
在移动端压缩图片并且上传主要用到filereader、canvas 以及 formdata 这三个h5的api。逻辑并不难。整个过程就是:
(1)用户使用input file上传图片的时候,用filereader读取用户上传的图片数据(base64格式)
(2)把图片数据传入img对象,然后将img绘制到canvas上,再调用canvas.toDataURL对图片进行压缩
(3)获取到压缩后的base64格式图片数据,转成二进制塞入formdata,再通过XmlHttpRequest提交formdata。
谢谢,最好检查一下大小,是否合适,在选择是否要进行二次压缩。
不用再压缩,再压缩如果用有损压缩画质下降太厉害,用无损压缩意义不大