我有一个用于提供内容的图像文件夹,其中包含 jpeg、jpg 和 gif 文件。会一直自动添加更多文件。
我打算将以下命令添加到 crontab(当然带有适当的文件路径)
mogrify -质量 80% "*.jpg"
mogrify-质量 80%“*.jpeg”
mogrify -质量 80% "*.gif"
我想恭敬地问一下,是否有人知道这些命令是否最终会多次处理文件,因此当文件转换为 80% 时,下次 cron 运行时它会进一步减少它等等......
ImageMagick 是否确保它不会处理同一个文件两次?如果不行,我该如何处理这个问题,因为我无法重命名文件。
我们将非常感谢社区的任何帮助。
谢谢。
已编辑:感谢用户 Sven 提供的以下答案。这是我现在正在使用的似乎有效的脚本:
谢谢。初步看来,mogrify 可以就地写入。
我将使用这个脚本:
#!/bin/bash
watchedFolder=[insert path here]
quality=70
while [ true ]
do
fileName=$(inotifywait -q -e create --format "%f" "$watchedFolder")
sleep 1s
mogrify -quality 80% "$watchedFolder/$fileName"
sleep 2s
echo "Processed " $fileName
sleep 2s
done
答案1
魔法精灵将要每次调用它时,它都无法识别该文件是否已被处理。毕竟,你告诉它“处理所有 jpg 文件”,所以这是完全正常和预期的。
有很多方法可以解决这个问题,具体取决于您的具体情况。
- 您可以为您的 cron 作业编写一个包装器,它将保存已处理的文件列表并仅处理新文件。这在大多数情况下都有效,但也是最不优雅和最复杂的解决方案。
- 采用命名方案。重命名小文件并使用排除小版本的通配符。
- 改变你的工作流程。将新文件放在暂存区,并将较小的文件写入最终目标。
- 检查是否
mogrify
可以就地写入(而不是写入新文件然后删除旧文件)。如果可以,则使用它inotifywatch
来了解新文件并在新文件到达时对其进行处理。就地写入在此方法中很重要,否则在写出缩减版本inotifywatch
时也会看到一个新文件。mogrify