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

相关推荐
全栈前端老曹14 小时前
【ReactNative】核心组件与 JSX 语法
前端·javascript·react native·react.js·跨平台·jsx·移动端开发
用户542778485154014 小时前
JavaScript 闭包详解:由浅入深掌握作用域与内存管理的艺术
前端
小小黑00714 小时前
快手小程序-实现插屏广告的功能
前端·javascript·小程序
用户542778485154014 小时前
闭包在 Vue 项目中的应用
前端
TG:@yunlaoda360 云老大14 小时前
配置华为云国际站代理商OBS跨区域复制时,如何编辑委托信任策略?
java·前端·华为云
dlhto15 小时前
前端登录验证码组件
前端
@万里挑一15 小时前
vue中使用虚拟列表,封装虚拟列表
前端·javascript·vue.js
黑臂麒麟15 小时前
Electron for OpenHarmony 跨平台实战开发:Electron 文件系统操作实战
前端·javascript·electron·openharmony
wordbaby15 小时前
Tanstack Router 文件命名速查表
前端
1024肥宅15 小时前
工程化工具类:模块化系统全解析与实践
前端·javascript·面试