【发布时间】:2021-06-04 22:51:54
【问题描述】:
所以我有一个包含很多图像的文件夹。我使用 imagemagick 来优化文件夹内的所有图像。我中止了“优化”图像的命令。现在。一些图像已经过优化,但不是全部。所以我必须再次运行该命令。有没有办法让 imagemagick 跳过已经优化的图像?
这是我通常用来优化所有图像的方法:
for i in *.jpg; do mogrify -quality 85 "$i"; done
【问题讨论】:
-
我不知道 ImageMagick 有什么方法可以知道您已经处理了一个文件。但是您的命令效率不高。您正在使用 mogrify 处理一个文件,然后遍历所有文件。 mogrify 的目的是自己处理整个文件夹的文件。所以要么在循环中使用 convert 代替 mogrify 。或者只使用 mogrify 在一个命令中处理文件夹中的所有文件,而无需循环。见legacy.imagemagick.org/Usage/basics/#mogrify
-
当我不使用循环命令时,我得到:debian 中的参数列表太长。您对如何以其他方式进行操作有什么建议吗?导致 60k 图像太多(即使您使用 mv 或 rm 之类的简单命令)
-
那么我建议您只需将 mogrify 替换为 convert 并保留循环。它不会对您有太大变化,但 convert 更灵活。因此,如果您有更复杂的命令,它会起作用,但 mogrify 可能不会。使用语法
convert input -quality 85 output,其中输出可以与输入相同。或者只是让你的 mogrify 保持简单的命令。我建议你两者都计时,看看哪个更有效。 -
另一个想法。您可以在处理之前检查图像的质量。如果小于等于 85,则不要处理。
标签: debian imagemagick mogrify