Как создать простое отражение, используя imagemagick с динамическим размером изображения? - PullRequest
0 голосов
/ 15 февраля 2019

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

Вот документация http://www.imagemagick.org/Usage/advanced/

Вот пример кода

  convert pokemon.gif \( +clone -flip \) -append \
          -size 100x100 xc:black +swap \
          -gravity North -geometry +0+5 -composite  reflect_perfect.png

Вот мой bash-скрипт с моей шириной и высотой ...

#!/bin/bash

infile="framed.png"

ww=`convert $infile -format "%w" info:`
hh=`convert $infile -format "%h" info:`

convert $infile -alpha on \
  \( +clone -flip -channel A -evaluate multiply .35 +channel \) -append \
  -size ${ww}x${hh} xc:black +swap \
  -gravity North -geometry +0+5 -composite  reflect_alpha.png

Мое результирующее изображение точно такое же, как и исходное изображение.

Вот точное изображение, которое япользуюсь https://www.dropbox.com/s/l8gtieuqi1yoipm/iPhoneXR-4-categories_framed.png?dl=0

1 Ответ

0 голосов
/ 15 февраля 2019

Размер черного фона должен быть больше, чем удвоенная высота ввода, и, по крайней мере, быть таким же широким, как вход.Так что я бы сделал следующее в Imagemagick

Ввод:

enter image description here

infile="zelda1.jpg"
ww=`convert $infile -format "%[fx:1.5*w]" info:`
hh=`convert $infile -format "%[fx:2.1*h]" info:`
convert $infile -alpha on \
\( +clone -flip -channel A -evaluate multiply .35 +channel \) -append \
-size ${ww}x${hh} xc:black +swap \
-gravity North -geometry +0+5 -composite  reflect_alpha.png


enter image description here

Но вы можете попробовать мой сценарий оболочки bash unix Imagemagick, 3Dreflection на http://www.fmwconcepts.com/imagemagick/index.html,, если вы хотите большей гибкости.

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

Чтобы ответить на вашвопрос, не имеет значения, PNG или JPG.Проблема в том, что у вас есть прозрачность.Если поставить прозрачный фон, то

infile="WPB-wtpC.png"
ww=`convert $infile -format "%[fx:1.5*w]" info:`
hh=`convert $infile -format "%[fx:2.1*h]" info:`
convert $infile \
\( +clone -flip -alpha on -channel A -evaluate multiply .35 +channel +write tmp1.png \) -append +write tmp2.png \
-size ${ww}x${hh} xc:none +swap \
-gravity North -geometry +0+5 -compose over -composite  reflect_alpha.png


enter image description here

Если вы используете черный фон, то

infile="WPB-wtpC.png"
ww=`convert $infile -format "%[fx:1.5*w]" info:`
hh=`convert $infile -format "%[fx:2.1*h]" info:`
convert $infile \
\( +clone -flip -alpha on -channel A -evaluate multiply .35 +channel +write tmp1.png \) -append +write tmp2.png \
-size ${ww}x${hh} xc:black +swap \
-gravity North -geometry +0+5 -compose over -composite  reflect_alpha.png


enter image description here

ПРИМЕЧАНИЕ. У меня была опечатка в первом коде изображения Zelda.Я случайно набрал w, а не h в уравнении hh, которое я сейчас исправил.Это могло вас испортить.

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