Проверка командной строки и передача аргументов (ImageMagick) - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть этот небольшой фрагмент, который я нашел, который добавляет тень к изображению.(используя 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 изображения .. И я хотел бы добавить тени 3x3 к * .png и 6x6 к * -hd.png (очевидно, графика сетчатки ..)

1- Как сравнить имя изображения и решить

2- Как передать размер тени

Спасибо!

Ответы [ 2 ]

2 голосов
/ 19 сентября 2011

Для 1 .: Используйте find, это действительно швейцарский армейский нож для таких работ:

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

Конечно, вам придется сохранить свою функцию в виде одного файла оболочки вместо функции оболочки, но в любом случае это желательно для повторного использования кода.

Для 2 .: использовать другой аргумент командной строки, который в функции указан как $ 3.

1 голос
/ 19 сентября 2011
for f in *.png; do
  case "$f" in
    *-hd.png) shadow="6x6" ;;
    *) shadow="3x3" ;;
  esac
  image-shadow "$f" $shadow
dona
...