Получить точное соответствие цветов с помощью Imagick :: CompositeImage - PullRequest
0 голосов
/ 24 апреля 2018

Я хочу объединить два изображения, одно из которых является изображением шаблона, а другое - цветовой маской.

Моя проблема в том, что цвет, который я получаю, не совпадает с тем, который я хочу получить.

Это мое "изображение шаблона" $ image:

enter image description here

Я тогда использую

$image->compositeImage($ribbon, Imagick::COMPOSITE_COLORBURN, 0, 0);

чтобы объединить его с цветным изображением

enter image description here

Я ожидаю вывод, похожий на этот:

enter image description here

но я получаю:

enter image description here

Более светлые и темные области происходят из рисунка рисунка, но в целом это другой цвет, чем я ожидал. Я также попробовал любой другой вариант, включая Imagick::COMPOSITE_HARDLIGHT, Imagick::COMPOSITE_OVERLAY и т. Д.

Что мне здесь не хватает? Может быть, мне нужно сначала подготовиться к $ image? Или использовать другой метод объединения изображений вместе?

UPD: Если я использую COMPOSITE_COLORIZE, я также не получаю нужный мне цвет, но гораздо светлее enter image description here

1 Ответ

0 голосов
/ 25 апреля 2018

Извините, я плохо кодирую Imagick.Но вы можете попробовать следующее в Imagemagick (синтаксис Unix).Сначала я делаю изображение таким образом, чтобы белый цвет стал прозрачным.Затем я обрезаю белое изображение шаблона и выкладываю его.Затем я извлекаю альфа-канал изображения.Затем я делаю композитное умножение, используя все 3 изображения, где альфа-канал используется в качестве маски.

convert \( image.png -alpha off -colorspace gray \
-fuzz 2% -transparent white \) \
\( pattern.png -fuzz 20% -trim +repage -write mpr:pattern \
+delete -size 200x152 tile:mpr:pattern \) \
\( -clone 0 -alpha extract \) \
-alpha off -compose multiply -composite result.png

enter image description here

Поочередно, делая каждый шаг отдельнои сохраняя результаты, которые проще конвертировать в Imagick, вы можете сделать:

convert image.png -alpha off -colorspace gray grayimage.png
convert pattern.png -fuzz 20% -trim +repage trimpattern.png 
convert -size 200x152 tile:trimpattern.png tiledpattern.png
convert grayimage.png tiledpattern.png -compose multiply -composite multipliedimage.png
convert grayimage.png -fuzz 2% -transparent white -alpha extract alphaimage.png
convert multipliedimage.png alphaimage.png -alpha off -compose copy_opacity -composite -compose over -background white -flatten result2.png

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...