這很簡單。
畫布的所有像素數據都按順序存儲在一個數組中。
第一個像素的數據佔用數組元素#0-3(紅色= 0 /綠色= 1 /藍色= 2/alpha = 3)。
第二個像素的數據佔用了數組元素#4-7(red = 4/green = 5/blue = 6/alpha = 7)。
等等...
可以通過使用context.getImageData加載的像素數據()和通過陣列枚舉。
var imgData = context.getImageData(0,0,canvas.width,canvas.height);
var data = imgData.data;
// enumerate all pixels
// each pixel's r,g,b,a datum are stored in separate sequential array elements
for(var i=0; i<data.length; i+=4) {
var red = data[i];
var green = data[i+1];
var blue = data[i+2];
var alpha = data[i+3];
}
您也可以更改這些數組值,然後使用context.putImageData()將數組保存回圖像。
// save any altered pixel data back to the context
// the image will reflect any changes you made
context.putImageData(imgData, 0, 0);
然後圖像將根據您對其像素陣列所做的更改而改變。
和迭代是如何發生的?從上/下左/右?並在哪個方向?這對了解 –
@AlejandroLozdziejski會有幫助。從左上角到右下角。 :-) – markE
[關於ImageData對象的文檔](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Pixel_manipulation_with_canvas) – Xeoncross