为什么函数在画布中返回错误颜色?

时间:2015-01-15 10:38:08

标签: javascript canvas colors

我的画布颜色是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 那是为什么?

1 个答案:

答案 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);

http://jsfiddle.net/jtav1dm6/2/