Как заменить пиксели на изображении в PHP? - PullRequest
1 голос
/ 09 мая 2011

Я бы хотел пройтись по каждой строке и столбцу изображения и заменить определенные пиксели разными цветами. Я открыт для решения с использованием GD или ImageMagick. Может кто-нибудь дать мне пример, как это сделать? Я погуглил несколько разных способов и не нашел надежного примера.

1 Ответ

7 голосов
/ 09 мая 2011

Вы можете достичь этого с помощью GD, например:

Вы будете обрабатывать цвета как шестнадцатеричные значения

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);
            }
        }
    }
}
...