【问题标题】:putImageData/getImageData is not 100% accurateputImageData/getImageData 不是 100% 准确的
【发布时间】: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通道有关。考虑将此作为错误报告给供应商。

标签: javascript html5-canvas


【解决方案1】:

对于图像,您可以关闭图像平滑:

context.imageSmoothingEnabled = false;
context.mozImageSmoothingEnabled = false;
context.oImageSmoothingEnabled = false;
context.webkitImageSmoothingEnabled = false;
context.msImageSmoothingEnabled =false;

IE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-05
    • 2021-12-04
    • 2012-06-10
    • 1970-01-01
    • 2010-11-29
    • 2012-01-17
    • 2012-10-13
    相关资源
    最近更新 更多