改变多种不同rgb颜色的颜色

时间:2013-10-29 12:21:39

标签: php image-processing gd

嘿伙计们我想用php重新着色以下图片: enter image description here

我想让我的用户可以在我的php应用程序中点击几下来更改横幅的颜色。所以我使用了这个小实验脚本here

这是我改变图像的一种rgb颜色的脚本:

$imgname = "test.png";
$im = imagecreatefrompng($imgname);
imagealphablending($im, false);
for ($x = imagesx($im); $x--;) {
    for ($y = imagesy($im); $y--;) {
        $rgb = imagecolorat($im, $x, $y);
        $c = imagecolorsforindex($im, $rgb);
        if ($c['red'] == 0 && $c['green'] == 94 && $c['blue'] == 173) { 
            $colorB = imagecolorallocatealpha($im, 255, 0, 255, $c['alpha']);
            imagesetpixel($im, $x, $y, $colorB);
        }
    }
}
imageAlphaBlending($im, true);
imageSaveAlpha($im, true);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

问题是横幅的蓝色是多种不同的rgb颜色,所以如何在不影响其他颜色的情况下一次更改所有蓝色rgb颜色。

1 个答案:

答案 0 :(得分:2)

只需定义一个适用于所有想要的颜色的阈值。

变化:

 if ($c['red'] == 0 && $c['green'] == 94 && $c['blue'] == 173)

类似于:

if ($c['red'] == 0 && $c['green'] == 94 && $c['blue'] > 173 && $c['blue'] < 240)

对所有3个通道执行此操作并测试最适合的颜色范围。