在前端压缩图片
预计 4 分钟
前端经常有上传图片的需求,比如上传头像,但用户可能会选择一张很大的图片,这个时候我们可以选择将图片压缩,然后再上传。
压缩的思路如下:
- 获取图片文件
- 将文件转为 Blob URL 或者 Data URL
- 将该 URL 赋值给一个 Image 对象
- 在 Image 对象加载完毕之后,将该图片绘制到 Canvas 上面
- 然后使用 Canvas 的 toDataURL 或者 toBlob 方法,设定图片输出质量进行压缩
- 之后经过一些处理就可以发送带有这张压缩过图片的请求了
将图片文件转为 URL
转为 Blob URL
一件需要注意的事情是,在创建了 Blob URL 之后,如果不关闭标签的话,所分配的资源会在内存里常驻,因此在不会使用到这个 Blob URL 之后,我们可以释放资源:
转为 Data URL
赋值给 Image 对象并绘制到 Canvas 上
压缩
然后再将 canvas 转回 Data URL 或者 Blob URL
#前端
Powered by Waline v2.15.5
Preview: