对图片压缩处理,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的时候保存图片格式,在转二进制的时候使用图片原格式