所以,我在<script>
部分内部的“context”变量上使用了这个函数getImageData,当我做一些像绘制矩形的事情那样做ctx.getImageData.data [0]它将显示我在画布上绘制的那个矩形的红色值。但是,当我导入一个图像并将其绘制到画布上,并尝试使用getImageData.data [0]时,我得到的是0,这没有任何意义,我不确定为什么它没有正确读取图像。我已经尝试了这方面的教程,但它们都很模糊,只有段一起写。
所以,当我绘制矩形时,它的颜色值就会很好,但是当我绘制图像时,即使没有在画布上绘制矩形,我也永远无法获得图像上特定像素的值。
有人能帮助我吗?这是我的代码:
<html>
<head>
<title>
Color Test :)
</title>
</head>
<body>
<canvas id = "ColorTest" width = "500" height = "500">
please don't use shitty browsers :)
</canvas>
<script>
//netscape.security.PrivilegeManage…
var canvas = document.getElementById("ColorTest")
, ctx = canvas.getContext("2d")
, image = new Image()
image.onload = function(){
ctx.drawImage(image,0,0)
}
image.src = 'Pikachu.gif'
ctx.fillStyle = "rgb(123,40,170)"
ctx.fillRect(0,0,100,100)
var imagedata = ctx.getImageData(0,0,100,100)
, spot = 0
while(imagedata.data[spot] == 0){
spot++
}
console.log(imagedata.data[0])
</script>
</body>
</html>
答案 0 :(得分:2)
以下警告是否合理?
image.onload = function() {
ctx.drawImage(image, 0, 0);
var id = ctx.getImageData(0,0,canvas.width,canvas.height);
alert([id.data[0], id.data[1], id.data[2], id.data[3]].join(", "));
}
答案 1 :(得分:1)
可能是图像是透明的。尝试使用单色非转换图像。
您使用的浏览器是什么?不允许在从其他域加载图像时使用getImageData(安全问题),如果我没记错,有些浏览器在运行脚本时确定域有问题