#!/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
我真的很感激一些帮助!谢谢!
答案 0 :(得分:2)
我有点不清楚这是怎么做的(我对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}}包含与该名称匹配的任何文件。)
答案 1 :(得分:1)
我不完全确定我是否可以完全帮助,因为问题的全部范围都不相关,但我看到你有“ .tiff”(有两个f),然后其他一切都是“ .tif“(有一个f)。所以也许这就是它无法找到文件名的原因。
还要删除color1 =“blah”中的空格(例如color1 =“blah”),该行将起作用。