0

嘿伙计们,我正在尝试用 php 重新着色以下图像: 在此处输入图像描述

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

这是我更改图像的一种 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 颜色而不影响其他颜色。

4

1 回答 1

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 个通道执行此操作并测试最适合的颜色范围。

于 2013-10-29T12:31:07.443 回答