我一直在努力弄清楚为什么我的 PNG 着色不起作用。我想要:
- 创建一个画布。
- 在里面画一个矩形。
- 剪辑矩形,以便后续绘图发生在矩形内。
- 在矩形内引入几个形状。
- 在矩形内也引入一个PNG(带有透明区域)。
- 为Png着色,其中下面的形状通过透明区域显示,PNG可以通过任何颜色切换。
我感到非常沮丧,以至于我一直在简化以找到问题的根源,直到我刚刚从 W3schools 网站复制了最简单的一段代码,而这种简单的图像着色不起作用!为什么当我在 W3site 上查看这个简单的示例时它可以工作,但是当我将它逐字复制到我的计算机上时(更改图像名称和 src)它不起作用?
我得到了最新的 Chrome。这是来自 W3schools 的代码。
<!DOCTYPE html>
<html>
<body>
<img id="scream" src="supportArt/scream.jpg" alt="The Scream" width="220" height="277">
<canvas id="myCanvas" width="220" height="277" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
<script>
document.getElementById("scream").onload = function() {
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var img = document.getElementById("scream");
ctx.drawImage(img, 0, 0);
var imgData = ctx.getImageData(0, 0, c.width, c.height);
// invert colors
var i;
for (i = 0; i < imgData.data.length; i += 4) {
imgData.data[i] = 255 - imgData.data[i];
imgData.data[i+1] = 255 - imgData.data[i+1];
imgData.data[i+2] = 255 - imgData.data[i+2];
imgData.data[i+3] = 150;
}
ctx.putImageData(imgData, 0, 0);
};
</script>
</body>
</html>