描述:canvas透明画板getImageData数据后putImageData到另一个画板 导致在开发工具上新画板putImageData数据背景不透明。在真机上却又透明,如下图
canvas.getContext('2d',{ alpha: true });
const imgData1 = ctx1.getImageData(0, 0, canvas.width, canvas.height)
ctx.putImageData(imgData1, canvas.width, canvas.height);
mac工具图
ios真机图
你好,这边工具上实现表现是符合标准的。客户端的实现反而是不太规范。
这里 putImageData 的实现效果应该是工具目前的表现,会去覆盖区域,而不是和真机一样出现交叠的效果。
如果需要实现背景透明,按照标准应该是开发者去操作 imgdata 像素数据进行背景色处理实现。
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body style="background: blue">
<canvas id="myCanvas" width="400" height="260" style="border:1px solid #c3c3c3;"></canvas>
<div style="color: #fff">
页面背景色为蓝色 <br/>
canvas标签为图片 <br/>
OffscreenCanvas 画板为 这首文案222 <br/>
</div>
<script type="text/javascript">
const c1 = document.getElementById("myCanvas");
const ctx = c1.getContext('2d');
ctx.font="20px Arial";
ctx.fillText("这是文案222",0,20)
const img = new Image();
img.onload = function () {
ctx.drawImage(img,0,0,img.width,img.height);
var offscreen = new OffscreenCanvas(200, 50);
var d12 = offscreen.getContext('2d');
d12.fillText("这是文案222",0,20)
var imgData=d12.getImageData(0,0,200,50);
ctx.putImageData(imgData,50,50);
};
img.src = "https://www.w3school.com.cn/i/eg_tulip.jpg";
</script>
</body>
</html>