版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
最近公司的一个H5活动,搜狐新闻客户端开机图制作需要用户上传一张图片之后,先显示出来再进行裁剪然后上传base64字符串到服务器上。
但是问题来了用户一般上传的图片文件的大小都在3-5M左右,转成base64后提交给服务器的話实在是太大了到时上传到服务器的时候服务器超时了(都是泪啊!),所以这里需要先压缩下图片
偶然间想起来可以用canvas进行图片压縮,因为这个H5只是在客户端的webview中的而webview又是webkit内核,所以对canvas的支持自然是比较好的我们就毫无疑问的选择了用canvas进行压缩。
但是问题来了用户一般上传的图片文件的大小都在3-5M左右,转成base64后提交给服务器的話实在是太大了到时上传到服务器的时候服务器超时了(都是泪啊!),所以这里需要先压缩下图片
偶然间想起来可以用canvas进行图片压縮,因为这个H5只是在客户端的webview中的而webview又是webkit内核,所以对canvas的支持自然是比较好的我们就毫无疑问的选择了用canvas进行压缩。
这里的img_this是一个img对潒首先我们先得到这个图片的宽高比,然后指定canvas的宽度为720高度由之前的宽高比来定。这里指定了canvas的宽度为720后将图片画在canvas里面后转成嘚base64的宽度也会为720。
将图片转换成jpeg和png的格式后面
0.7为图片的压缩质量 不要把图片压缩成png,因为压缩成png后base64的字符串可能比不转换前的长!
就这麼简单的几步就实现了对图片的压缩咋样,方便吧~