如何使用具有动态图像尺寸的imagemagick创建简单的反射?

时间:2019-02-14 21:44:39

标签: image

我试图使用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 :(得分:1)

黑色背景的大小必须大于输入高度的两倍,并且至少与输入宽度相同。所以我将在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 shell脚本,在http://www.fmwconcepts.com/imagemagick/index.html上进行3Dreflection。

添加:

要回答您的问题,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图片代码中输入错误。我不小心在hh公式中输入了w而不是h,现在我已经解决了。那可能把你搞砸了。