对图片压缩处理,png格式图片中有透明背景,对其用js canvas压缩后,透明背景变为黑色。
- 排查出来是因为只有png格式支持透明,但是上传的png格式图片时都被处理成jpg格式了,下面是问题代码:
let arr = canvas.toDataURL('image/jpeg').split(',')
转二进制的时候强制 设置为了jpg格式,同时直接用canvas.toDataURL().split(‘,’)的话会默认使用png格式,上传jpg也会变成png;显然这样调整也不好
解决方案: 上传图片格式是什么转二进制图片格式就设定为什么,不改变原有图片格式。
beforeUpload = file => {
...
this.fileType = file.type
}
_dataURLtoBlob = canvas => {
let arr = canvas.toDataURL(this.fileType).split(',')
...
}
在beforeUpload的时候保存图片格式,在转二进制的时候使用图片原格式
文章讲述了在对PNG格式图片进行压缩时遇到的问题,由于上传时被自动转换为JPG格式,导致透明背景变为黑色。作者提供了解决方案,即在上传前保存图片格式并在转二进制时使用原格式,以保持透明度。

被折叠的 条评论
为什么被折叠?



