在javascript中获取像素颜色

get pixel colour in javascript

本文关键字:像素 颜色 获取 javascript      更新时间:2023-09-26

这可能是一个非常基本的问题,但由于我是javascript的新手,我无法找到解决问题的正确方法。我需要做一个if语句,检查像素颜色,如果它是黑色的,就做一些事情,如果不是,就做其他事情。(这是一个反向传播项目,所以才会有迭代)

for(i=1;i<iterations;i++) {
for(j=1;j<300;i+=2) { //canvas size is 300x300
for(k=1;k<300;i+=2) {
if (context.getImageData(j,k,1,1).data == [0, 0, 0, 0])
{/*code to be executed*/}
else {/*other code*/}
}
}
}

很抱歉问了一些简单的问题,但我没有太多时间做这件事,所以现在不能从基础开始。

您需要比较数组中的每个项目:

var pixel = context.getImageData(j,k,1,1).data; // cache array
if (pixel[0] === 0 &&                           // R
    pixel[1] === 0 &&                           // G
    pixel[2] === 0 &&                           // B
    pixel[3] === 0) {                           // A
    ...
}

更好的是,不要对每个像素使用getImageData(),而是在开始迭代之前缓存它:

var x, y,
    buffer = context.getImageData(0, 0, 300, 300).data;
for(y = 0; i < 300; y++) {
    for(x = 0; x < 300; x++) {
        var pos = (y * 300 + x) * 4;
        if (buffer[pos]   === 0 &&               // R
            buffer[pos+1] === 0 &&               // G
            buffer[pos+2] === 0 &&               // B
            buffer[pos+3] === 0) {               // A
            ...was black...
        }
        else {
            ...was not black...
        }
   }
}