我的画布颜色是50 255 50 155.当我做代码时:
function getClickedAreaColor(x, y) {
var data = ctx.getImageData(x, y, 1, 1).data,
color = [];
for (var i = 0; i < data.length; i++) {
color.push(data[i]);
}
return color;
}
它返回49 255 49 155 那是为什么?
答案 0 :(得分:1)
对于这种情况,specs for the getImageData method中有一条注释:
由于转换为预乘alpha的有损性质 颜色值,刚刚使用putImageData()设置的像素 可能会返回到等效的getImageData()作为不同的值。
它可以解释为什么你会在
中看到这种差异var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.fillStyle="rgba(50, 255, 50, 0.607843137254902)"
ctx.rect(0, 0, 100, 100);
ctx.fill();
console.log(ctx.getImageData(0, 0, 1, 1).data);