Смещение ImageMagick работает не так, как ожидалось

#php #imagemagick #imagick

#php #imagemagick #imagick

Вопрос:

Я использую последнюю версию ImageMagick с PHP, и это мой код:

 $diplacementmap = new Imagick('displacement.png');
$android = new Imagick('android.png');

$android->compositeImage($diplacementmap, Imagick::COMPOSITE_DISPLACE, 0, 0);

echo $android;
  

По какой-то причине я не получаю ожидаемых результатов. Почему это может быть?

результаты imagick COMPOSITE_DISPLACE

Оба файла отдельно:

Android — https://i.stack.imgur.com/bYbYX.png

Карта смещения — https://i.stack.imgur.com/6g4v9.png

Комментарии:

1. Что происходит при замене изображений?

2. @jrswgtr просто беспорядок разных оттенков серого.

3. Я думаю, что ваш фактический результат гораздо более художественный, чем ожидаемый 😉

4. Пожалуйста, предоставьте свои входные изображения отдельно для тестирования. Спасибо.

5. @MarkSetchell я их добавил. Спасибо.

Ответ №1:

Установите значения смещения равными 10,10 в ImageMagick или Imagick. Когда вы устанавливаете для аргументов значение 0,0, вы можете получить несколько большее значение по умолчанию.

Например, в командной строке:

Ввод:

введите описание изображения здесь

Карта смещения:

введите описание изображения здесь

 convert android.png displacement.png -define compose:args=10,10 -compose displace -composite result10.png
  

введите описание изображения здесь

или при 20

 convert android.png displacement.png -define compose:args=20,20 -compose displace -composite result20.png
  

введите описание изображения здесь

Комментарии:

1. Спасибо, я добавил это $android->setImageArtifact('compose:args', '5,5'); , и теперь это именно то, что мне было нужно.