Как заменить определенный цвет картинки с помощью php Imagick?

Подскажите как заменить определенный цвет на другой во всей картинке?

Есть Imagick::clutImage, но я не понял как его испольовать

Хочется что-то вроде $im->changeColor('#FFFFFF','#000000');


Ответы (1 шт):

Автор решения: frozencoast

Используйте Imagick::opaquePaintImage

$img = new Imagick('source.jpg');
$target = 'rgb(255,255,255)';
$fill = 'black';
$fuzz = 0.05 * $img->getQuantumRange()['quantumRangeLong'];
$img->opaquePaintImage($target, $fill, $fuzz, false, Imagick::CHANNEL_DEFAULT);
$img->setImageFormat("jpeg");
file_put_contents("destination.jpg", $img); 

Более подробно здесь - https://www.php.net/manual/ru/imagick.opaquepaintimage.php

→ Ссылка