只是为了我的问题,让我们说这个功能:
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);
}
}
}
因此我在问是否有更好的优化方式?