如何访问/更改 javascript 图像对象中的像素?

Rob*_*son 4 javascript image-processing

我正在将图像绘制到画布上以在网页上显示。我有该图像的两份副本。第一个是原始的或真实的,第二个是应用了各种图像处理算法的副本。

如何将像素从真实图像复制到副本,以及如何在复制图像后访问副本中的像素来处理图像?

到目前为止我看到的示例都涉及访问和操作画布对象而不是图像数据。这是推荐的解决方案吗?将原始图像绘制到画布上,然后对画布进行处理?

Dav*_*ain 5

要获取图像数据,请使用画布上下文的 getImageData() 方法,然后从 data 属性访问像素数据。数据属性中的每个像素都包含红色、绿色、蓝色和 Alpha 通道。因此,如果您确实将图像绘制到画布上,那么您可以这样做

var imageData = context.getImageData(imageX, imageY, imageWidth, imageHeight);
var data = imageData.data;
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样从 x 和 y 坐标中挑选出特定的像素数据

// pick out pixel data from x, y coordinate
var x = 20;
var y = 20;
var red = data[((imageWidth * y) + x) * 4];
var green = data[((imageWidth * y) + x) * 4 + 1];
var blue = data[((imageWidth * y) + x) * 4 + 2];
var alpha = data[((imageWidth * y) + x) * 4 + 3];
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到有关如何使用画布处理图像数据的更多信息。

希望有帮助。