📅  最后修改于: 2023-12-03 15:21:06.921000             🧑  作者: Mango
Web ImageData API 提供了一种在 Canvas 上处理像素数据的方式。 ImageData.data 属性是 ImageData 对象的一个属性,它返回一个包含每个像素 R、G、B 以及 alpha 值的数组。
var imageData = context.getImageData(x, y, width, height);
var data = imageData.data;
x
:表示将要被读取的像素数据的左上角横坐标y
:表示将要被读取的像素数据的左上角纵坐标width
:表示将要被读取的像素数据的宽度height
:表示将要被读取的像素数据的高度ImageData.data 属性返回一个 Uint8ClampedArray 数组对象,其中包含了处理后的像素数据。
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var width = canvas.width;
var height = canvas.height;
var imageData = context.getImageData(0, 0, width, height);
var pixelData = imageData.data;
这段代码演示了如何在 Canvas 上获取像素数据,通过 getImageData() 函数可以获取到一个 ImageData 对象,调用 ImageData.data 属性可以得到像素数据。
ImageData.data 属性返回一个数组,其长度为 width * height * 4
,由于每个像素由 R、G、B 和 alpha 值组成,所以数据长度为像素数乘以 4。
数组中每四个元素表示一个像素的 R、G、B 和 alpha 值,所以可以通过像素的横纵坐标以及数组下标来获取对应像素的数据。
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var width = canvas.width;
var height = canvas.height;
var imageData = context.getImageData(0, 0, width, height);
var pixelData = imageData.data;
for (var i = 0; i < pixelData.length; i += 4) {
// 获取像素的 R、G、B 和 alpha 值
var r = pixelData[i];
var g = pixelData[i + 1];
var b = pixelData[i + 2];
var alpha = pixelData[i + 3];
// 修改像素的 R、G、B 值
pixelData[i] = 255 - r; // R 取反
pixelData[i + 1] = 255 - g; // G 取反
pixelData[i + 2] = 255 - b; // B 取反
}
// 将修改后的像素数据绘制到 Canvas 上
context.putImageData(imageData, 0, 0);
这段代码演示了如何在 Canvas 上修改像素数据,遍历所有像素,将每个像素的 R、G、B 值取反后,调用 putImageData() 函数重新绘制到 Canvas 上。
gamma
或 color space corretion
相关的处理,所以在进行图像处理时需要手动进行这些处理。