我是靠谱客的博主 怡然书包,最近开发中收集的这篇文章主要介绍前端JS图片压缩处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2020-10 分享

近期工作遇到了用户上传图片由前端压缩图片大小,再传到OSS。这样可以减少用户上行传输的数据量,减少用上传的等待时长,优化用户体验。

方案:利用js现成canvas。

Canvas 对象提供的 toDataURL() 方法,该方法接收 type 和 encoderOptions 两个可选参数。 type 表示图片格式,默认为 image/png。而 encoderOptions 用于表示图片的质量,在指定图片格式为 image/jpeg 或 image/webp 的情况下,可以从 0 到 1 的区间内选择图片的质量。如果超出取值范围,将会使用默认值 0.92,其他参数会被忽略。

除了toDataURL() 方法之外,它还提供了一个 toBlob() 方法,和 toDataURL() 方法相比,toBlob() 方法是异步的,因此多了个 callback 参数,这个 callback 回调方法默认的第一个参数就是转换好的 blob文件信息。toBlob(callback, [type], [encoderOptions]) 参数 encoderOptions 用于针对image/jpeg 格式的图片进行输出图片的质量设置。

流程:
1.读取用户上传的 File 对象,转化成 Image 对象,再写入到 Canvas 画布,最后由 Canvas 对象 API 对图片的大小和尺寸输出调整,转换成data URL数据,实现压缩目的。

在这里插入图片描述

(图为一张png格式图片转化为base64字符串形式)

由4个部分组成:前缀(data:)、数据类型 (image/png)、非文本可选的标记( base64 )、数据本身(后面的一大串)

2.上传到OSS上,OSS需要的是Blob二进制类型的大对象
3.上传成功后把OSS响应回来的url回显,顺便把图片地址给了后端

完毕。

(注:如果对于画质要求过高,原图片像素过大这个方法不使用。需要借助后端服务能力,使用算法)

最后

以上就是怡然书包为你收集整理的前端JS图片压缩处理的全部内容,希望文章能够帮你解决前端JS图片压缩处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部