Imagemagick bash脚本无法正常工作

时间:2012-01-08 20:15:21

标签: bash imagemagick

#!/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 个答案:

答案 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”),该行将起作用。