2012-01-08 68 views
0
#!/bin/bash 

dir="/posix/path/to/folder" 
cd "$dir" 

color1 = "#816c51" 
color2 = "#5a4a3b" 
color3 = "#1c110f" 

for file in *.tiff 
do 
    base=${file%*.tif} 
    convert -unsharp 5 "$base" "$base.ppm" 
    convert -opaque white -fill white -fuzz 10% "$base.ppm" "${base}_step1.tif" 
    convert -fuzz 5% -fill "$color1" -opaque "$color1" "${base}_step1.tif" "${base}_step2.tif" 
    convert -fuzz 1.5% -fill "$color1" -opaque "$color2" "${base}_step2.tif" "${base}_step3.tif" 
    convert -fuzz 12% -fill "black" -opaque "$color3" "${base}_step3.tif" "${base}_step4.tif" 
    convert "${base}_step4.tif" "${base}_final.tif" 
done 

我得到了幾個錯誤:ImageMagick的bash腳本不工作

convert: unable to open image ... convert: missing an image filename test.sh: line 6: color1: command not found

我會很感激一些幫助!謝謝!

+1

'COLOR1:命令不found' - 除去各處'='的空間。 – 2012-01-08 20:26:30

+0

而且,除了ruakh的帖子,在'轉換-unsharp 5 「$基地」 「$ base.ppm」',你可能想' 「$文件」''沒有 「$基地」'作爲第一個文件ARG。 – 2012-01-08 20:31:16

回答

2

我什麼,這是試圖做(我沒有與ImageMagick的很多經驗)有點不清楚,但是從猛砸的角度來看,我可以告訴你,這一點:

for file in *.tiff 
do 
    base=${file%*.tif} 

沒有意義:它試圖剝離與在.tiff結尾的文件名最後.tif(一個F)(兩架F的)。你大概的意思要麼是:

for file in *.tiff 
do 
    base="${file%.tiff}" 

(其中剝去最後.tiff)或本:

for file in *.tif 
do 
    base="${file%.tif}" 

(其中發現在.tif結尾的文件);或者可能是這樣的:

for file in *.tiff *.tif 
do 
    base="${file%.tiff}" 
    base="${base%.tif}" 

(它處理這兩種情況)。

你也可能要顯式檢查的情況下"$base"'*'(這可能會發生,例如,如果您嘗試在不包含匹配該名稱的任何文件的目錄使用*.tif)。

+0

這很好,你們真棒!只是最後一件事:一旦生成最終圖像,我如何刪除生成的步驟文件?感謝堆! – 3zzy 2012-01-09 04:59:15

+1

@Nimbuz:有幾種方法。一個是,在整個循環結束之後(即在'done'語句之後),寫入'rm * _step?.tif'。這將刪除其名字'_step1.tif'或'_stepX.tif'或'_step_.tif'或類似結尾的任何文件。 – ruakh 2012-01-09 13:12:39

1

如果我能完全幫助,因爲問題的完整程度並不相關,但我看到您有「.tiff」(帶有兩個f),然後其他所有內容都是「」 .tif「(與一個f)。所以也許這就是爲什麼它找不到文件名。

還得到在COLOR1 =「嗒嗒」擺脫了空間的(如顏色1 =「嗒嗒」)以及該行會工作。