#php #imagemagick #gd
#php #imagemagick #gd
Вопрос:
Я хотел бы перебрать каждую строку и столбец в изображении и заменить определенные пиксели разными цветами. Я открыт для решения с использованием GD или ImageMagick. Кто-нибудь может привести мне пример того, как это сделать? Я погуглил несколько разных способов и не нашел надежного примера.
Ответ №1:
Вы можете достичь этого с помощью 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 amp; ($at >> 0x10);
$g = 0xFF amp; ($at >> 0x8);
$b = 0xFF amp; ($at);
$hex = dechex($r).dechex($g).dechex($b);
// set $from to $to if hex matches.
if ($hex == $from) {
imagesetpixel($img, $x, $y, $to);
}
}
}
}
Комментарии:
1. вероятно, следует указать, что цвета $ from / $ to должны предоставляться в виде строк в формате шестнадцатеричных значений ‘RRGGBB’.
2. Просто любопытно, но есть ли способ изменить цвет, когда он находится где-то между X и Y? Я не уверен, возможно ли это с цветами..
3. да — создайте хэш-карту или что-то в этом роде со значениями, которые вы хотите заменить в качестве ключей, и значениями, которые вы собираетесь заменить, возможно, в качестве значения ключа