小编Glu*_*ate的帖子

使用脚本自动选择 JPEG 和 PNG

选择正确的格式来保存图像对于保持图像质量和减少伪影至关重要。不同的格式遵循不同的压缩方法,并具有各自的优点和缺点。

例如,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)

脚本的高级版本必须

  • 能够处理文件名和目录名中的空格
  • 保留原始文件名
  • 如果设置了 alpha 值,则展平 PNG 图像
  • 比较临时转换后的图像与其原始图像之间的文件大小
  • 确定差异是否大于给定的百分比
  • 按指示行动

实际转换可以使用 imagemagick 工具完成:

convert -quality 92 -flatten -background white file.png file.jpg
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的 …

png unix jpeg imagemagick conversion

5
推荐指数
1
解决办法
808
查看次数

标签 统计

conversion ×1

imagemagick ×1

jpeg ×1

png ×1

unix ×1