使用Javascript进行图像操作?

6

我正在尝试编写一个Greasemonkey脚本,最好能够处理图片(具体而言,是找到图像中最暗的像素)。有没有办法实现这个功能,还是必须要嵌入Flash?

2个回答

8

由于这是针对Firefox的特定解决方案,您可以使用canvas元素。我从未编写过Greasemonkey脚本,所以不知道具体如何操作,但思路是,创建一个新的canvas元素并将图像绘制到canvas上。然后,您可以从canvas中获取像素值。

// Create the canvas element
var canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;

// Draw the image onto the canvas
var ctx = canvas.getContext("2d");
ctx.drawImage(image, 0, 0);

// Get the pixel data
var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);

// Loop through imageData.data - an array with 4 values per pixel: red, green, blue, and alpha
for (int x = 0; x < imageData.width; x++) {
    for (int y = 0; y < imageData.height; y++) {
        var index = 4 * (y * imageData.width + x);
        var r = imageData.data[index];
        var g = imageData.data[index + 1];
        var b = imageData.data[index + 2];
        var a = imageData.data[index + 3];

        // Do whatever you need to do with the rgba values
    }
}

1

删除这个

var r = imageData.data[index];
var g = imageData.data[index + 1];
var b = imageData.data[index + 2];
var a = imageData.data[index + 3];

在 JavaScript 中,参数传递不是按引用传递的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接