我们有一个图像存储区,其中一些图像已经过优化,而另一些则没有。
我正在编写脚本'这将通过存储中的每个图像并运行优化过程。
我想知道:
我试图在相同的图像上几次运行质量85%,我看不到任何质量损失(在第3次运行后图像的大小没有改变)。但是我没有找到官方文件的证据。
谢谢!
答案 0 :(得分:3)
在优化之前,您可以检查质量设置是否已经为75:
ItemEvent.SELECTED
然后再次优化并检查:
identify -format %Q fred.jpg
92
如果您使用convert fred.jpg -quality 75 optimised.jpg
identify -format %Q optimised.jpg
75
,这很容易:
bash
将图像标记为优化的另一种方法可能是将文件中的注释设置为单词“optimized”,如下所示:
q=$(identify -format %Q fred.jpg)
[ $q -ne 75 ] && mogrify -quality 75 fred.jpg
因此,您将测试图像评论是否包含单词“optimized”,如果没有,则优化图像并更改评论以显示:
# Set comment
mogrify -set comment "optimised" fred.jpg
# Get comment
identify -format %c fred.jpg
optimised
如果您要处理数百或数千张图片,我建议 GNU Parallel 。请在目录中的一些文件的小型副本上尝试以下示例:
[[ $(identify -format %c fred.jpg) != *optimised* ]] && { echo Optimising fred.jpg; mogrify -set comment "optimised" -quality 75 fred.jpg; }
你会发现它会在第一遍中并行处理它们,然后在第二遍中不做任何事情。
如果你有太多的图片,并且得到“错误:太多args”,你可以像这样传递parallel '[[ $(identify -format "%c" {}) != *optimised* ]] && { echo Optimising {}; mogrify -set comment "optimised" -quality 75 {}; }' ::: *jpg
上的文件名,而不是{{1 }}:
stdin