更改所有像素而不是某种颜色

时间:2013-04-10 02:03:10

标签: php image syntax gd rgb

只是为了我的问题,让我们说这个功能:

int imagecolorexact ( resource $image , int $red , int $green , int $blue )

我们可以这么简单地说出来:

$index = imagecolorexact($image, 0, 0, 0);

显然,因为我们正在谈论手头的例子是RGB颜色,因此$ red,$ green和$ blue值介于0到255之间。此函数返回带有该rgb化合物的像素索引。

我需要的是获得其化合物 NOT (0,0,0)的所有像素的索引,所以我想这样做:

for($i = 0; $i <= 255; $i++) {
    for($j = 0; $i <= 255; $i++) {
        for($k = 0; $i <= 255; $i++) {
            $index[] = imagecolorexact($image, $i, $j, $k);
        }
    }
}

但是这将运行255 * 255 * 255次,这很多我都是。

我的问题是: 有什么方法可以简化这个吗?

我为什么要问这个? 我试图将图像中的所有黑色像素更改为黄色,因此可能是:

$image = imagecreatefrompng("./test.png");
imagecolorset($image, imagecolorexact($image, 0, 0, 0), 255, 255, 0);

我需要将同一图像中的所有NON黑色像素更改为黑色,这样就可以了(我是吗?):

for($i = 1; $i <= 255; $i++) {
    for($j = 1; $i <= 255; $i++) {
        for($k = 1; $i <= 255; $i++) {
            $index = imagecolorexact($image, $i, $j, $k);
            imagecolorset($new, $value, 0, 0, 0);
        }
    }
}

因此我在问是否有更好的优化方式?

0 个答案:

没有答案