我想遍历图像中的每一行和每一行,并用不同的颜色替换某些像素。我对使用GD或ImageMagick的解决方案持开放态度。谁能给我一个如何做到这一点的例子?我用Google搜索了几种不同的方法,但没有找到一个可靠的例子。
答案 0 :(得分:7)
您可以通过以下方式实现此目的:
您将处理颜色为十六进制值
function replaceColor($img, $from, $to) {
$r = hexdec(substr($to, 0, 2));
$g = hexdec(substr($to, 2, 2));
$b = hexdec(substr($to, 4, 2));
// allocate $to color.
$to = imagecolorallocate($img, $r, $g, $b);
// pixel by pixel grid.
for ($y = 0; $y < imagesy($img); $y++) {
for ($x = 0; $x < imagesx($img); $x++) {
// find hex at x,y
$at = imagecolorat($img, $x, $y);
$r = 0xFF & ($at >> 0x10);
$g = 0xFF & ($at >> 0x8);
$b = 0xFF & ($at);
$hex = dechex($r).dechex($g).dechex($b);
// set $from to $to if hex matches.
if ($hex == $from) {
imagesetpixel($img, $x, $y, $to);
}
}
}
}