2012-01-08 4 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 Баш скрипт не работает

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

Я бы очень признателен за помощь! Благодаря!

+1

'color1: command not found' - удалить пробелы вокруг' = '. –

+0

И, помимо сообщения Рухаха, в 'convert -unsharp 5 '$ base" "$ base.ppm" ', вы, вероятно, хотите' '$ file' 'not' '$ base" 'как первый файл arg. –

ответ

2

Я немного непонятно, на что это пытается сделать (у меня нет большого опыта работы с ImageMagick), но с Баш точки зрения, я могу вам сказать, что этот бит:

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

не имеет смысла: он пытается удалить окончательный .tif (один F) из имени файла, который заканчивается на .tiff (два 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

+1

@Nimbuz: Есть несколько способов. Один из них, после того, как весь цикл завершен (то есть после инструкции 'done'), напишите' rm * _step? .tif'. Это приведет к удалению любого файла, имя которого заканчивается на '_step1.tif' или' _stepX.tif' или '_step_.tif' или тому подобное. – ruakh

1

Я не совсем уверен, могу ли я полностью помочь, потому что полная степень проблемы не имеет отношения к делу, но я вижу, что у вас есть «.tiff» (с двумя f), а затем все остальное - « .tif "(с одним f). Поэтому, возможно, поэтому он не может найти имена файлов.

Также избавиться от пробелов в цвете1 = "blah" (например, color1 = "blah"), и эта строка будет работать.

Смежные вопросы