嘿伙计们我想用php重新着色以下图片:
我想让我的用户可以在我的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颜色。
答案 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个通道执行此操作并测试最适合的颜色范围。