使用 JS Canvas putImageData 操作像素时,所需颜色和渲染颜色存在差异。绘制 RGB(255,255,0) 时,画布上的输出是 RGB(254,254,86)。其他值也是如此。问题出在哪里?
这是JSFiddle
检查截图
var canvas = document.getElementById('canvas');
var canvasWidth = canvas.width;
var canvasHeight = canvas.height;
var ctx = canvas.getContext('2d');
var imageData = ctx.getImageData(0, 0, canvasWidth, canvasHeight);
var data = imageData.data;
var red = 255;
var green = 255;
var blue = 0;
var alpha = 255;
for (var y = 0; y < canvasHeight; ++y) {
for (var x = 0; x < canvasWidth; ++x) {
var index = (y * canvasWidth + x) * 4;
data[index] = red;
data[++index] = green;
data[++index] = blue;
data[++index] = alpha;
}
}
ctx.putImageData(imageData, 0, 0);