之前在做项目的时候经常遇到上传图片的问题,对于太大的图片,如果总时原图上传的话,速度很慢,同时也对服务器造成了较大压力。所以,若非要求原图上传,最好对图片进行一下压缩。
压缩图片我用的是第三方的工具库canvas-resize。其基本思路就是将原图片读取到内存,然后利用canvas画布重新画出来一个压缩后的图片。
用法
1 | npm install |
- 支持AMD, CMD模块化的引入方式
- 也可通过外链
1 | canvasResize(this.files[0], { |
将canvas裁剪之后的base64转换为blob对象格式的上传文件
这个canvasResize将图片压缩后的格式的base64,然后拿这个base64格式的图片转为blob格式的图片。
编写一个将以base64的图片url数据转换为Blob的工具👇
1 | // Utility.js |
我在sfa-vue项目中曾应用过的例子👇
1 | uploadImg() { |
经测试,一张120kb的图片使用压缩之后的图片大小为20kb左右。