canvas.toDataURL后图片背景变成黑色

前情提要:压缩图片的时候,有张白底证件照toDataURL之后变成了黑底,非常疑惑。

查找一番之后发现貌似并没有特别好的解决方案,于是只能canvas绘制前填充白色背景

javascript 复制代码
canvas = document.getElementById("canvas"),
context = canvas.getContext("2d");
// 在canvas绘制前填充白色背景
context.fillStyle = "#fff";
context.fillRect(0, 0, canvas.width, canvas.height);

参考

https://blog.csdn.net/xiaolinlife/article/details/119350412

这边博文里解释了透明区域变成黑色背景 的原因:

canvas转换成jpeg之前移除alpha通道,所以透明区域被填充成了黑色。

这个aphpa通道,就是RGBA中的A,JEPE通常只有3个通道(红色、绿色和蓝色),而PNG可以有4个通道(红色、绿色、蓝色和透明度)(当然也可以只有3个通道)。

相关推荐
難釋懷26 分钟前
Vue解决开发环境 Ajax 跨域问题
前端·vue.js·ajax
特立独行的猫a31 分钟前
Nuxt.js 中的路由配置详解
开发语言·前端·javascript·路由·nuxt·nuxtjs
咸虾米33 分钟前
在uniCloud云对象中定义dbJQL的便捷方法
前端·javascript
梨子同志34 分钟前
JavaScript Proxy 和 Reflect
前端·javascript
汤圆炒橘子38 分钟前
状态策略模式的优势分析
前端
90后的晨仔1 小时前
解析鸿蒙 ArkTS 中的 Union 类型与 TypeAliases类型
前端·harmonyos
IT_陈寒1 小时前
Element Plus 2.10.0 重磅发布!新增Splitter组件
前端·人工智能·后端
挑战者6668881 小时前
vue入门环境搭建及demo运行
前端·javascript·vue.js
贩卖纯净水.1 小时前
Webpack的基本使用 - babel
前端·webpack·node.js
用户882093216672 小时前
Vue组件通信全攻略:从父子传参到全局状态管理,一篇搞定!
前端