#!/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
Eu recebo um par de erros:
convert: unable to open image ...
convert: missing an image filename
test.sh: line 6: color1: command not found
Eu realmente aprecio alguma ajuda! Obrigado!
Respostas:
2 para resposta № 1Eu estou um pouco incerto sobre o que isso está tentando fazer (eu não tenho muita experiência com o ImageMagick), mas do ponto de vista de Bash, eu posso te dizer que isso:
for file in *.tiff
do
base=${file%*.tif}
não faz sentido: tenta retirar uma final .tif
(um F) de um nome de arquivo que termina em .tiff
(dois F "s). Você supostamente quis dizer isso:
for file in *.tiff
do
base="${file%.tiff}"
(que tira a final .tiff
) ou isto:
for file in *.tif
do
base="${file%.tif}"
(que encontra arquivos terminados em .tif
); ou, talvez, isso:
for file in *.tiff *.tif
do
base="${file%.tiff}"
base="${base%.tif}"
(que lida com os dois casos).
Você também provavelmente deseja verificar explicitamente o caso "$base"
é "*"
(o que acontecerá, por exemplo, se você tentar usar *.tif
em um diretório que não contém arquivos correspondentes a esse nome.
1 para resposta № 2
Eu não tenho certeza se posso ajudar totalmente porque a extensão do problema não é relevante, mas vejo que você tem ".tiff "(com dois f) e depois todo o resto é".tif "(com um f). Então, talvez seja por isso que não é possível encontrar os nomes dos arquivos.
Também se livrar dos espaços em color1 = "blah" (por exemplo, color1 = "blah") e essa linha funcionará.