Simple Automator Shell 图像合成脚本不起作用

Simple Automator Shell Script for image compositing not working

我创建了一个文件夹操作,以便每次将新的 png 文件放入文件夹时,使用 imagemagick 将新文件和文件夹内的现有 .png 文件合成并另存为新文件。看起来相当简单。我已经在终端中尝试了该脚本并且它可以工作但是在自动机中它似乎没有被触发......我假设是因为 "f"?

以下是我的自动化程序 "Run Shell Script" 片段:

for f in "$@"
do
   /usr/local/bin/convert BG.png "$f" -composite result.jpg
done

也许跑题了,但为什么你总是转换 BG.png 一个?

但回到主题:当您将 cron 用于计划脚本时 运行,验证您是否使用了完整的文件路径。如果您 运行 来自指定目录的脚本,它将成功;但是当 cron 运行 执行它时,$CWD - 工作目录 - 可能会有所不同并且不会处理任何文件。

例如,您可以将完整的目录路径放在命令行上并像这样解析它:

DIR=
shift
for f in "$@"; do
    convert BG.png "$DIR/$f" -composite result.jpg
done

只需要添加其中 BG.png & result.jpg应该是。

PATH=$PATH:/usr/local/bin
where=$(dirname )
for f in "$@"
do
   convert ${where}/BG.png "$f" -composite ${where}/result.jpg
done

更新

如果你想将生成的result.jpg图像写入另一个位置;然后只需更新最终路径。 Automator 传递了几个环境变量来使用。在这种情况下 HOME 将是您当前登录用户的基本路径。因此,如果我希望 result.jpg 自动放置在 Desktop 上......

PATH=$PATH:/usr/local/bin
where=$(dirname )
DESKTOP=${HOME}/Desktop
# `~/Desktop' will also work in this example
for f in "$@"
do
   convert ${where}/BG.png "$f" -composite ${DESKTOP}/result.jpg
done