只是为了我的问题,让我们说这个功能:
int imagecolorexact ( resource $image , int $red , int $green , int $blue )
我们可以像这样简单地调用它:
$index = imagecolorexact($image, 0, 0, 0);
显然,因为我们正在讨论的示例是关于 RGB 颜色的,因此 $red、$green 和 $blue 的值介于 0 和 255 之间。此函数返回具有该 rgb 化合物的像素的索引。
我需要的是获取它们的复合不是(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);
而且我需要将同一图像中的所有非黑色像素更改为黑色,因此(我想?):
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);
}
}
}
因此,我问是否有更好的优化方法?