基本上,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>我试着寻找这样的问题,但我没有找到任何相关的东西。以防万一,如果这将是后来的问题,我需要这是100%准确的,即使当使用toDataURL()上传图像到网站,也是当网站返回的数据稍后,并让浏览器绘制新的画布上的图像。
发布于 2013-11-29 02:48:37
对于图像,可以关闭图像平滑:
context.imageSmoothingEnabled = false;
context.mozImageSmoothingEnabled = false;
context.oImageSmoothingEnabled = false;
context.webkitImageSmoothingEnabled = false;
context.msImageSmoothingEnabled =false;IE<11不支持ImageSmoothingEnabled,因此作为一种解决方法,您可以设置-ms-interpolation-mode:最近邻
https://stackoverflow.com/questions/20272576
复制相似问题