Скрипт Imagemagick Bash не работает - PullRequest
0 голосов
/ 09 января 2012
#!/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

Я получаю пару ошибок:

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

Буду очень признателен за помощь!Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 января 2012

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

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 в каталоге, в котором нет файлов, соответствующих этому имени ).

1 голос
/ 09 января 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...