Изображения стека Imagemagick перекрываются с прозрачностью - PullRequest
0 голосов
/ 24 апреля 2020

Я борюсь с этим уже два дня ... безуспешно. Некоторое задание я выполнил с Gimp в течение некоторого времени, но теперь мне нравится автоматизировать его для стандартной обработки.

Таким образом, результат должен выглядеть следующим образом https://imgur.com/a/jcb3amr Вид одного изображения впереди и два или три позади этого с некоторой прозрачностью, чтобы исчезнуть слои (необязательно) В одной группе всегда один и тот же размер изображения. Но размеры могут отличаться от других групп. Пример: одна группа для объединения - это каждое изображение 124x112px, другая группа - каждый 188x80px, а следующая - 164x160px.

Я пробовал что-то вроде

convert image1.png image2.png image3.png -set page '+%[fx:u[t-1]page.x+u[t-1].w-256]+%[fx:u[t-1]page.y+16]' -background none -layers merge +repage output.png

, что было работает нормально (за исключением дополнительной прозрачности) для некоторых файлов. На самом деле мне не требуется смещение по центру, было бы хорошо, если бы каждый слой был смещен примерно на 30x5 пикселей. Но выходное изображение должно быть относительным к входному изображению.

Итак, короче говоря ... действительно озадачен, как этого добиться. Надеюсь, кто-то может помочь. Я также изучил расширение PHP Imagick https://www.php.net/manual/de/book.imagick.php Там у меня был следующий подход, который был еще хуже, чем выше

  $imagick->newimage(200, 112, '#ffffffff');
  foreach ($uploadfiles as $file) {    
    $im = new Imagick($file);
    $imagick->compositeimage($im, Imagick::COMPOSITE_DEFAULT, 30, 5);
  }
  $imagick->writeImage($output);

Кажется, это не компенсировало его совсем.

Кто-нибудь имеет руку помощи для меня?

1 Ответ

0 голосов
/ 24 апреля 2020

Это работает для меня в Imagemagick 6.

Ввод:

enter image description here

convert lena.png \( lena.png -duplicate 2 -alpha set -channel a -evaluate set 75% \) lena.png -set page '+%[fx:u[t-1]page.x+u[t-1].w-128]+%[fx:u[t-1]page.y+16]' -background none -layers merge +repage output.png


enter image description here

Первое и последнее изображения непрозрачны, а средние 3 непрозрачны на 75% (прозрачность 25%)

ДОПОЛНИТЕЛЬНО:

Если вы хотите только фиксированное смещение X 30 и отсутствие смещения Y, затем используйте

convert lena.png \( lena.png -duplicate 2 -alpha set -channel a -evaluate set 75% \) lena.png \
-set page '+%[fx:u[t-1]page.x+30]+0' -background none -layers merge +repage output.png


enter image description here

...