2011-09-19 49 views
0

我有這個很酷的小片段,我發現它爲影像添加了陰影。 (使用ImageMagick,我覺得..)命令行字符串檢查和參數傳遞(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

對於1:使用發現,它確實是這樣工作的瑞士軍刀:

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

當然,你必須給你的函數保存爲單個shell文件,而不是一個shell功能,但無論如何,這對於代碼重用來說都是可取的。

對於2 .:使用另一個命令行參數,該參數在函數中被引用爲$ 3。

+0

看起來不錯! ..關於1)..你爲什麼使用:'{}'?這些是爲了什麼? ...通常不會將查找結果保存到變量中,然後使用它? – Mazyod

+0

哦,等等..這是一個選項> _> ..對此,我不習慣閱讀命令行代碼。 – Mazyod

+1

是的,{}被傳遞給find和all。 find語法稍微有些棘手,但是man find是值得閱讀的。 – thiton

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