Имитация Photoshop Multiply в PHP с помощью gd или ImageMagick

До сих пор я использовал только библиотеку gd изображений PHP для изменения размера, обрезки и изображений в оттенках серого. В настоящее время я пытаюсь найти способ имитировать то, что происходит, когда в Photoshop вы помещаете цветной слой поверх изображения в оттенках серого и выбираете «умножить» из меню эффектов слоя. Или, как объяснил бы мой старый лектор по печати, мне нужно сделать дуотон.

По какой-то причине я думал, что все, что мне нужно сделать, это просто превратить изображение в оттенки серого, а затем добавить цветной слой со значением прозрачности менее 100% поверх. После того, как я сделал это, я удивился, почему я вообще думал, что получу что-то кроме размытия.

Затем просмотрев документацию библиотеки gd, все, что я смог найти, это фильтр IMG_EFFECT_OVERLAY для использования с imagelayereffect, но в результате этого белый цвет моего изображения в оттенках серого остается белым, а не красным.

Я не использовал ImageMagick раньше (но это один из тех редких случаев, когда я контролирую сервер, поэтому могу установить его, если мне нужно) и, просмотрев документацию в прошлом, я предположил, что что-то вроде multiply в Photoshop будет одним из фильтров по умолчанию. Увы нет.

Мой усталый мозг изо всех сил пытается понять, что на самом деле делает Photoshop multiply на попиксельной основе, поэтому я не знаю, какие, если таковые имеются, серии более простых фильтров ImageMagick (или, если возможно, gd), я мог бы использовать для получения результата. нужно.

Приближается крайний срок, и Google отказывается возвращать какие-либо полезные результаты, поэтому любая помощь здесь будет принята с благодарностью.


person Chris Stevenson    schedule 16.08.2010    source источник


Ответы (3)


У ImageMagick есть умножение операция. Не могу сказать, насколько он близок к фотошопу по результату и качеству (я тоже не очень понимаю, что он делает :), но обязательно попробуйте.

person Pekka    schedule 16.08.2010
comment
Я ДУМАЛ, что будет, большое спасибо за ссылку. Я посмотрю на это, и если это близко, я поставлю вам большую зеленую галочку. - person Chris Stevenson; 16.08.2010

Я считаю, что это самый простой способ применить Multiply в imagemagick PHP.

$print = new Imagick("blank.jpg");
$printOverlayTexture = new Imagick("overlay.jpg");
$print->compositeImage($printOverlayTexture, Imagick::COMPOSITE_MULTIPLY, 0, 0);
person Ricky Odin Matthews    schedule 08.09.2015

Что бы это ни стоило, вот коллекция удобных скриптов ImageMagick. Они не мои, но я часто вспоминаю их.

Сценарии ImageMagick

person lewiguez    schedule 02.01.2012