选择正确的格式来保存图像对于保持图像质量和减少伪影至关重要。不同的格式遵循不同的压缩方法,并具有各自的优点和缺点。
例如,JPG 适用于色彩渐变丰富的现实生活照片。另一方面,无损 PNG 在原理图方面要优越得多:

在处理大量文件时,选择正确的格式可能是一件苦差事。这就是为什么我很想找到一种方法来自动化它。
关于我的特定用例的一些背景知识:
我正在为我大学的一系列讲座制作一些讲义。讲义中有丰富的图表,我必须从 PDF 格式的幻灯片中提取。提取这些图像给了我无损的 PNG,有时会不必要地大。
将这些特定文件转换为 JPEG 可以将它们的大小减少到原始文件大小的 20% 以下,同时保持相同的质量。这很重要,因为在文字处理器中处理数百张大图像非常容易崩溃。
将所有提取的 PNG 批量转换为 JPEG不是我愿意遵循的选项,因为大多数图像更适合格式化为 PNG。转换这些将导致大小不显着的减少,有时甚至会增加文件大小 - 至少我的测试运行显示了这一点。
我们可以从中得出的是,压缩后的文件大小可以作为指示哪种格式最适合特定图像的指标。它不是一个特别准确的预测器,但效果很好。那么为什么不以脚本的形式使用它:

我包含inotifywait是因为我希望在将提取的图像拖到文件夹中时自动执行脚本。
这是我过去几周一直在使用的脚本的更简单版本:
#!/bin/bash
inotifywait -m --format "%w%f" --exclude '.jpg' -r -e create -e moved_to --fromfile '/home/MHC/.scripts/Workflow/Conversion/include_inotifywait' | while read file; do mogrify -format jpg -quality 92 "$file"
done
Run Code Online (Sandbox Code Playgroud)
脚本的高级版本必须
实际转换可以使用 imagemagick 工具完成:
convert -quality 92 -flatten -background white file.png file.jpg
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的 …