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个通道)。

相关推荐
2601_9494800625 分钟前
【无标题】
开发语言·前端·javascript
css趣多多30 分钟前
Vue过滤器
前端·javascript·vue.js
理人综艺好会1 小时前
Web学习之用户认证
前端·学习
We་ct1 小时前
LeetCode 36. 有效的数独:Set实现哈希表最优解
前端·算法·leetcode·typescript·散列表
weixin_395448911 小时前
main.c_cursor_0129
前端·网络·算法
2401_859049082 小时前
git submodule update --init --recursive无法拉取解决
前端·chrome·git
这是个栗子2 小时前
【Vue代码分析】前端动态路由传参与可选参数标记:实现“添加/查看”模式的灵活路由配置
前端·javascript·vue.js
刘一说2 小时前
Vue 动态路由参数丢失问题详解:为什么 `:id` 拿不到值?
前端·javascript·vue.js
熊猫钓鱼>_>3 小时前
动态网站发布部署核心问题详解
前端·nginx·容器化·网页开发·云服务器·静态部署
方也_arkling3 小时前
elementPlus按需导入配置
前端·javascript·vue.js