命令行字符串检查和参数传递(ImageMagick)

时间:2011-09-19 08:37:18

标签: bash shell command-line imagemagick string-comparison

我找到了这个很酷的小片段,它为图像添加了阴影。 (使用imageMagick,我认为..)

  image-shadow () {
  out=${1%.*}-shadow.${1#*.}
  in=$1
  echo "Converted file : $out"
  if [ ! -z $2 ] ; then 
    convert $in -frame $2 $out
    in=$out
  fi
  convert $in \( +clone -background black -shadow 60x5+3+3 \) \
    +swap -background transparent -layers merge +repage $out
  }

我们使用:

image-shadow test.png 0x0

添加0x0边框和3x3阴影,如函数内所定义...

现在,我有* -hd.png图像和* .png图像..并且想要将* .png和6x6的3x3阴影添加到* -hd.png(显然,视网膜图形......)

1-如何比较图像名称,并决定

2-如何传递阴影大小

谢谢!

2 个答案:

答案 0 :(得分:2)

For 1:使用find,它真的是瑞士军刀用于此类工作:

find '(' -name '*.png' -and -not -name '*-hd.png' ')' -exec image-shadow '{}' 0x0 ';'

当然,您必须将您的函数保存为单个shell文件而不是shell函数,但这仍然是代码重用的理想选择。

For 2 .:使用另一个命令行参数,该参数在函数中被引用为$ 3。

答案 1 :(得分:1)

for f in *.png; do
  case "$f" in
    *-hd.png) shadow="6x6" ;;
    *) shadow="3x3" ;;
  esac
  image-shadow "$f" $shadow
dona