2012-01-08 19 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スクリプトは、私は、エラーのカップルを取得

+1

'color1:コマンドが見つかりませんでした' - '='の周りのスペースを削除します。 –

+0

そして、ruarchの投稿に加えて、convert -unsharp 5 "$ base" "$ base.ppm" 'では、最初のファイルargとして' '$ file" '' '$ base" 'を使わないことをお勧めします。 –

答えて

2

私はこれが(私はImageMagickを持つ多くの経験を持っていない)やろうとしているもののビットは不明だけど、バッシュの観点から、私はあなたを伝えることができ、このビット:

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

.tiff(2つのF)で終わるファイル名から最後の.tif(1つのF)を取り除こうとします。あなたは、おそらくこのどちらかを意味:

for file in *.tiff 
do 
    base="${file%.tiff}" 
(最終 .tiffを取り除き)

またはこの:

.tifで終わるファイルを検索します)
for file in *.tif 
do 
    base="${file%.tif}" 

。またはおそらく、これは:

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

(どちらの場合も扱います)です。

また、おそらく"$base"は(あなたがその名前に一致するすべてのファイルが含まれていないディレクトリに*.tifを使用しようとすると、例えば、起こるであろう)'*'であることを明示する場合にチェックしたいです。

+0

それは素晴らしい、あなたたちは素晴らしいです!ただ一つ最後のもの:最終的なイメージが生成されたら、生成されたステップファイルを削除するにはどうしたらいいですか?ありがとう! – 3zzy

+1

@Nimbuz:いくつかの方法があります。 1つは、ループ全体が終了した後(つまり、 'done'文の後)' rm * _step?.tif'と書くことです。これにより、名前が '_step1.tif'や' _stepX.tif'や '_step_.tif'などで終わるファイルが削除されます。 – ruakh

1

問題の完全な範囲が関係していないため、私が完全に助けることができるかどうかはわかりませんが、 ".tiff"(2つのf)とその後はすべてが " .tif "(1つのf)。だから多分それがファイル名を見つけることができない理由です。

また、color1 = "blah"(例:color1 = "blah")のスペースを取り除くと、そのラインが機能します。

関連する問題