【发布时间】:2013-12-14 20:55:45
【问题描述】:
基本上putImageData 和/或getImageData 不是 100% 准确的,我想知道是否有办法解决这个问题(我不确定为什么当您特别选择时它不是 100% 准确每个像素数据一个一个)。我这样做是为了更容易理解我在说什么:
http://jsfiddle.net/NmmMv/
在我的计算机上的 FireFox 上,文本的输出将是“2, 123, 255, 101”,但在 Chrome 上它将是“3, 121, 255, 101”。如果由于某种原因无法查看链接,请查看实际代码:
JavaScript:
C = document.getElementById('c');
c = C.getContext('2d');
d = c.getImageData(0, 0, C.width, C.height);
for (i = 0; i < d.data.length; i += 4) {
d.data[0] = 2
d.data[1] = 122
d.data[2] = 255
d.data[3] = 101
}
c.putImageData(d, 0, 0, 0, 0, C.width, C.height);
d = c.getImageData(0, 0, C.width, C.height);
document.getElementById('p').innerHTML = d.data[0] + ', ' + d.data[1] + ', ' + d.data[2] + ', ' + d.data[3]
HTML:
<canvas width='100' height='100' id='c'></canvas>
<p id='p'></p>
我试图寻找这样的问题,但我没有找到任何相关的东西。以防万一以后有问题,即使使用toDataURL() 将图像上传到网站,以及网站稍后返回数据并让浏览器绘制图像时,我也需要它是 100% 准确的回到新的画布上。
【问题讨论】:
-
这与内部如何处理alpha通道有关。考虑将此作为错误报告给供应商。