optiPNG用户手册 #
名称 #
OptiPNG −PNG图片优化程序
概要 #
optipng [−? | −h | −help]
optipng [选项...] 文件...
描述 #
OptiPNG 程序应尝试优化 PNG 文件,即在不丢失语义信息的情况下将其大小减小到最小。此外,该程序还应执行一系列辅助功能,如完整性检查、元数据恢复和像素图到 PNG 转换。
不保证优化尝试会成功。此程序无法优化的有效 PNG 文件通常保持不变;他们的规模不会增长。用户可以请求覆盖此默认行为。
文件 #
输入文件是以 PNG 格式(本机格式)或外部格式编码的光栅图像文件。当前支持的外部格式包括 GIF、BMP、PNM 和 TIFF。
OptiPNG 按如下方式处理命令行中给定的每个图像文件:
- 如果图像为 PNG 格式:
尝试就地优化给定文件。如果优化成功,或者启用了选项 −force,则用其优化版本替换原始文件。如果启用了选项 −keep,则会备份原始文件。
- 如果图像为外部格式:
创建给定文件的优化 PNG 版本。输出文件名由原始文件名和.png扩展名组成。
除非启用了选项 −clobber,否则不会覆盖现有文件。
选项 #
一般选项 #
- -?,-h,–help
显示选项的完整摘要。
- −backup, −keep
保留已修改文件的备份。
- −clobber
覆盖现有的输出和备份文件。在此选项下,如果未启用选项 −backup,则覆盖文件的旧备份将被删除。
- −dir 目录
输出文件存放目录
- −fix
启用错误恢复。此选项对有效的输入文件没有影响。 该程序将花费合理的精力来恢复尽可能多的数据,而不会增加输出文件大小,但通常不能保证成功。 该程序可能会增加文件大小,例如,通过重建缺失的关键数据。 在此选项下,完整性应优先于文件大小。 如果不使用此选项,则无效的输入文件将保持不处理状态。
- −force
强制写入新的输出文件。 此选项将覆盖程序不写入此类文件的决定,例如,当 PNG 输入经过数字签名(使用 dSIG)时,或者当 PNG 输出大于 PNG 输入时。
- −log 文件
将消息记录到文件中。出于安全原因,file 必须具有扩展名 .log。 此选项已弃用,最终将被删除。使用 shell 重定向。
- −out 文件
将输出文件写入文件。命令行必须只包含一个输入文件。
- −preserve
在适用的情况下保留文件属性(时间戳、文件访问权限等)。
- −quiet, −silent
在安静模式下运行。 如果启用了选项 −log ,则消息仍会写入日志文件。
- −simulate
在模拟模式下运行:执行试验,但不创建输出文件。
- −v 启用选项 −verbose 和 −version。
- −verbose 在 verbose 模式下运行。
- −version 显示版权、版本和构建信息。
- −− 停止选项开关解析。
PNG编码和优化选项 #
- −o 级别
选择优化级别。
优化级别 0 启用一组需要最少工作量的优化操作。那里不会更改图像属性(如位深度或颜色类型),也不会重新压缩现有 IDAT 数据流。
优化级别 1 支持单个 IDAT 压缩试用。选择的试验是 OptiPNG 认为它可能最有效的试验。
优化级别 2 和更高级别支持多个 IDAT 压缩试验;级别越高,效果约明显。
此选项的行为和默认值可能会因不同的程序版本而异。
使用选项 −h 可查看与特定版本相关的详细信息。
- −f 过滤器
选择 PNG 增量筛选器。
filters 参数指定为范围集(例如 −f0−5),默认 filters 值取决于选项 −o 设置的优化级别。
过滤器值 0、1、2、3 和 4 表示静态过滤,对应于标准 PNG 过滤器代码(分别为 None、Left、Up、Average 和 Paeth)。filter 值 5 表示自适应过滤,其效果由 OptiPNG 使用的 libpng(3) 库定义。
- −full 生成有关 IDAT 的完整报告 。此选项可能会减慢试用速度。
- −i 类型 选择隔行扫描类型 (0−1)。
如果选择了隔行扫描类型 0,则输出图像应为非隔行扫描(即逐行扫描)。如果选择了隔行扫描类型 1,则应使用 Adam7 方法对输出图像进行隔行扫描。
默认情况下,输出应具有与输入相同的交错类型。
-
−nb 不要应用位深度优化。
-
−nc 不要应用颜色类型优化。
-
−np 不应用调色板优化。
-
−nx 不应用任何无损图像优化:启用选项 −nb、−nc 和 −np。
-
−nz 不要对 IDAT 数据流进行重新编码。 不需要重新编码的 IDAT 优化操作(例如 IDAT 块连接)仍然执行。 此选项仅对 PNG 输入文件有效。
-
-zc levels
选择 IDAT 压缩中使用的 zlib 压缩级别。 levels 参数可用范围(例如 −zc6−9),默认 levels 值取决于选项 −o 设置的优化级别。 此选项的效果由 OptiPNG 使用的 zlib(3) 库定义。
- −zm levels
选择 IDAT 压缩中使用的 zlib 内存级别。 levels 参数可用范围(例如 −zm8−9),默认 levels 值取决于选项 −o 设置的优化级别。 此选项的效果由 OptiPNG 使用的 zlib(3) 库定义。
- −zs strategies
选择 IDAT 压缩中使用的 zlib 压缩策略。 strategies 参数可用范围(例如 −zs0−3),默认 strategies 值取决于选项 −o 设置的优化级别。 此选项的效果由 OptiPNG 使用的 zlib(3) 库定义。
- −zw size
选择用于 IDAT 压缩的 zlib 窗口大小(32k、16k、8k、4k、2k、1k、512、256)。 size 参数可以以字节(例如 16384)或千字节(例如 16k)为单位指定。默认大小值设置为最低窗口大小,该大小产生的 IDAT 输出与 值 32768。
此选项的效果由 OptiPNG 使用的 zlib(3) 库定义。
编辑选项 #
- -snip
从多图像、动画或视频文件中剪切一个图像。 根据输入格式,这可能是第一个或最相关(例如最大)的图像。
- −strip objects
从 PNG 文件中去除元数据对象。 PNG 元数据是存储在除 tRNS 之外的任何辅助块中的信息。 tRNS 表示 Alpha 通道,即使在渲染中忽略该通道,它仍然是 RGBA 颜色空间中的适当图像通道。 当前支持的唯一选项是 −strip all。
备注 #
选项可以按任何顺序出现(– 除外)、之前、之后或与文件名交替出现。选项名称不区分大小写,并且可以缩写为其最短的唯一前缀。
某些选项可能具有跟在选项名称后面的参数,用空格或等号分隔(’=’).如果 option 参数是数字或范围集,则可以省略分隔符。例如:
- out newfile.png 等同于 −out=newfile.png
−o3 等同于 −o 3 等同于 −o=3
−f0,3−5 等同于 −f 0,3−5 等同于 −f=0,3−5
范围参数是累积的;例如
−f0 −f3−5 等同于 −f0,3−5
−zs0 −zs1 −zs2−3 等同于 −zs0,1,2,3 等同于 −zs0−3
扩展说明 #
PNG 优化算法包括以下步骤:
- 减少图像的位深度、颜色类型和调色板。此步骤可能会减小未压缩图像的大小,从而间接减小压缩图像的大小(即输出 PNG 文件的大小)。
- 运行一套压缩方法和策略,并选择产生最小输出文件的压缩参数。
- 将所有 IDAT 内容存储到单个块中,从而消除重复的 IDAT 标头和 CRC 产生的开销。
- 在 IDAT toamininum 中设置不影响压缩率的 zlib 窗口大小,降低 PNG 解码器的内存需求。
并非需要执行上述所有步骤。该行为取决于实际的输入文件和用户选项。
- 步骤 1 可以通过 no-reduce 选项 −nb、-nc、-np 和 −nx 进行自定义。
- 步骤 2 可以通过 −o 选项进行自定义,也可以通过选项 −zc、−zm、−zs 和 −zw 进行微调。
- 步骤 3为必须执行过程。
- 步骤 4 仅在创建新的 IDAT 时执行,并且可以通过选项 −zw 进行微调。
通常预计极其详尽的搜索不会在压缩率方面产生显著的改进,并且仅建议高级用户使用。
示例 #
optipng file.png # 默认速度
optipng -o5 file.png # 慢
optipng -o7 file.png # 很慢
BUGS #
无损图像缩减未完全实现。这不会影响输出文件的完整性。以下是缺失的部分:
- 调色板减少仅部分实现。
- 对于灰度图像,低于 8 的位深度减少尚未实现。
不支持对 IDAT 总大小超过 2GB 的图像进行编码。
TIFF 支持仅限于未压缩的 PNG 兼容(灰度、RGB 和 RGBA)图像。
元数据不是从外部图像格式导入的。
不支持管道、流、扩展文件属性或访问控制列表。
其他参考 #
ng(5), libpng(3), zlib(3), pngcrush(1), pngrewrite(1).
标准 #
OptiPNG 生成的文件符合 PNG-2003 标准:
Glenn Randers-Pehrson et al. Portable Network Graphics (PNG) Specification, Second Edition.
W3C Recommendation 10 November 2003; ISO/IEC IS 15948:2003 (E).
作者 #
OptiPNG 由 Cosmin Truta 编写和维护。 本手册最初由 Nelson A. de Oliveira 为 Debian 项目撰写。它后来由 Cosmin Truta 更新,现在是 OptiPNG 发行版的一部分。