Cwebp

名称

cwebp - 将图片文件压缩为 WebP 文件

摘要

cwebp [options] input_file -o output_file.webp

说明

cwebp 使用 WebP 格式压缩图片。输入格式可以是 PNG、JPEG、TIFF、WebP 或原始 Y'CbCr 样本。注意:不支持动画 PNG 和 WebP 文件。

选项

基本选项包括:

-o string
指定输出 WebP 文件的名称。如果省略,cwebp 将执行压缩,但仅报告统计信息。使用“-”作为输出名称会将输出定向到“stdout”。
-- string
明确指定输入文件。例如,如果输入文件以“-”开头,则此选项很有用。此选项必须显示为 last。 之后的任何其他选项都将被忽略。
-h, -help
简短的使用情况摘要。
-H, -longhelp
所有可能选项的摘要。
-version
输出版本号(作为 main.minor.revision)并退出。
-lossless
对图片进行编码,没有任何损失。对于具有完全透明区域的图片,仅当使用 -exact 选项时,才会保留不可见的像素值(R/G/B 或 Y/U/V)。
-near_lossless int
指定近无损图像预处理的级别。此选项会调整像素值以帮助压缩率,但对视觉质量的影响微乎其微。它会自动触发无损压缩模式。 范围是 0(最大预处理)到 100(默认无预处理)。典型值约为 60。请注意,使用 -q 100 有损有时可以产生更好的结果。
-q float

指定 0100 之间的 RGB 通道压缩因数。默认值为 75

如果是有损压缩(默认),微小系数生成的文件体积较小,质量较低。使用 100 值可以实现最佳质量。

对于无损压缩(由 -lossless 选项指定),较小的系数可以加快压缩速度,但生成的文件会更大。使用 100 值可以实现最大压缩。

-z int

开启 lossless 压缩模式,指定级别介于 0 到 9 之间,级别 0 表示最快,级别 9 表示最慢。与速度较慢的模式相比,快速模式生成的文件更大。较好的默认值是 -z 6。此选项实际上是某些质量和方法预定义设置的快捷方式。如果后续使用了 -q-m 选项,这些选项将使此选项的效果失效。

-alpha_q int

请在 0100 之间指定 Alpha 压缩的压缩因数。使用 100 值可以实现 alpha 的无损压缩,而较低的值则会实现有损压缩。默认值为 100

-preset string

指定一组适用于特定类型的源材料的预定义参数。可能的值包括:defaultphotopicturedrawingicontext

由于 -preset 会覆盖其他参数的值(-q 的值除外),因此此选项应最好按照参数的顺序显示在最前面。

-m int

指定要使用的压缩方法。此参数用于控制编码速度与压缩后文件大小和质量之间的权衡。可能的值的范围为 06。默认值为 4。 如果使用更高的值,编码器将花费更多时间检查其他编码可能性并确定质量增益。值越小,处理时间就越快,但文件会比较大,压缩质量也会降低。

-crop x_position y_position width height

将源代码剪裁成一个左上角坐标为(x_positiony_position)的矩形,尺寸为 width x height。此剪裁区域必须完全包含在源矩形内。注意:剪裁在任何缩放之前应用。

-resize width height

将来源大小调整为一个大小为 width x height 的矩形。如果宽度参数或高度参数中有一个(但不是两个)为 0,则在计算该值时将保持宽高比不变。注意:缩放是在剪裁之后应用的。

-mt

如果可能,请使用多线程进行编码。

-low_memory

通常,压缩后大小会缩减 4 倍,从而减少有损编码的内存用量。这会减慢编码速度,并且输出在大小和失真方面略有不同。此标志仅对方法 3 及更高版本有效,并且默认处于关闭状态。请注意,关闭此标志会对比特流产生一些副作用:它会强制某些比特流功能,例如分区数量(强制设置为 1)。请注意,使用此选项时,cwebp 会输出更详细的比特流大小报告。

有损选项

这些选项仅在进行有损编码(默认,无论是否使用 alpha 的情况下)时才有效。

-size int
指定压缩输出要尝试达到的目标大小(以字节为单位)。压缩器会多次传递部分编码,以尽可能接近此目标。如果同时使用 -size-psnr,则以 -size 值为准。
-psnr float
指定压缩输出要尝试达到的目标 PSNR(以 dB 为单位)。 压缩器会多次传递部分编码,以尽可能接近此目标。如果同时使用 -size-psnr,则以 -size 值为准。
-pass int
设置在选项 -size-psnr 所使用的二元法期间要使用的卡券数量上限。最大值为 10,默认值为 1。如果使用了 -size-psnr 选项,但未指定 -pass,系统将使用默认值“6”。如果指定了 -pass,但未指定 -size-psnr,则将使用 40 dB 的目标 PSNR。
-af
开启自动过滤功能。此算法将花费额外的时间来优化过滤强度,以达到平衡的质量。
-jpeg_like
更改了内部参数映射,以更好地匹配 JPEG 压缩文件的预期大小。此标志通常会生成大小与其等效 JPEG 大小类似的输出文件(针对相同的 -q 设置),但视觉失真程度较低。

高级选项:

-f int
指定去块滤波器的强度,介于 0(不过滤)和 100(最大过滤)之间。值为 0 表示关闭所有过滤。 值越大,图片解码后应用的过滤流程的强度就越大。值越高,画面越平滑。典型值通常介于 2050 之间。
-sharpness int
指定滤镜的锐度(如果使用)。范围是 0(最锐)到 7(最不锐)。默认值为 0
-strong
使用强过滤(如果因 -f 选项而使用过滤)。系统会默认启用强过滤功能。
-nostrong
停用强过滤(如果因 -f 选项而使用过滤),并改用简单过滤。
-sharp_yuv
如果需要,使用更准确、更清晰的 RGB->YUV 转换。请注意,此过程比默认的“快速”RGB ->YUV 转换速度慢。
-sns int
指定空间噪声形状的振幅。空间噪声塑形(简称 sns)是指内置算法的常规集合,用于确定图片的哪个区域应使用相对较少的位,以及在其他地方更好地传输这些位。可能的范围从 0(算法处于关闭状态)到 100(最大限度效果)。默认值为 50
-segments int
更改 Sns 算法细分期间要使用的分区数量。路段应介于 14 之间。默认值为 4。 除非使用 -low_memory,否则此选项对方法 3 及更高版本没有影响。
-partition_limit int
通过限制某些宏块使用的位数来降低质量。 范围从 0(默认不降级)到 100(完全降级)。 对于中等大的图片,合适的值通常约为 30-70。在 VP8 格式中,所谓的控制分区上限为 512k,用于存储以下信息:是否跳过了宏块、宏块属于哪个区段、是编码为 4x4 内还是 16x16 模式,最后是用于每个子块的预测模式。对于非常大的图像,512k 仅为每个 16x16 宏块预留了几个位。每个宏块的绝对最小值为 4 位。跳过、片段和模式信息几乎会占用这 4 位(尽管这种情况不太可能发生),这对于非常大的图片会带来问题。partition_limit 系数用于控制使用位开销最高的模式(4x4 内)的频率。在达到 512k 限制且显示以下消息时,这非常有用:错误代码:6(PARTITION0_OVERFLOW: Partition #0 过大,无法容纳 512k)。如果使用 -partition_limit 不足以满足 512k 约束条件,则应使用较少的区段,以便为每个宏块节省更多标头位。请参阅 -segments 选项。请注意,-m-q 选项也会影响编码器的决策以及达到此限制的能力。

日志记录选项

这些选项用于控制输出级别:

-v
输出额外信息(特别是编码时间)。
-print_psnr
计算并报告平均 PSNR(峰值信噪比)。
-print_ssim
计算并报告平均 SSIM(结构相似度指标,请参阅 https://en.wikipedia.org/wiki/SSIM 了解更多详情)。
-print_lsim
计算并报告局部相似度指标(并置像素相邻像素中最小误差的总和)。
-progress
报告编码进度(以百分比表示)。
-quiet
不输出任何内容。
-short
仅输出用于测试的简短信息(输出文件大小和 PSNR)。
-map int
输出其他编码信息的 ASCII 映射。可能的映射值范围为从 16。这仅用于帮助调试。

其他选项

更多高级选项包括:

-s width height
指定输入文件实际包含遵循 ITU-R BT.601 建议且采用 4:2:0 线性格式的原始 Y'CbCr 样本。亮度平面的大小为 width x height
-pre int
指定一些预处理步骤。使用 2 值会在 RGBA->YUVA 转换期间触发依赖于质量的伪随机抖动(仅限有损压缩)。
-alpha_filter string
为 Alpha 平面指定预测性过滤方法。nonefastbest 中的一个,按复杂性增加且速度缓慢的顺序排列。默认值为 fast。在内部,使用四种可能的预测(无、水平、垂直、渐变)执行 Alpha 过滤。best 模式会依次尝试每种模式,并选择可提供较小尺寸的模式。fast 模式只会尝试形成先验猜测,而不测试所有模式。
-alpha_method int
指定用于 Alpha 压缩的算法:01。算法 0 表示不压缩,1 使用 WebP 无损格式进行压缩。默认值为 1
-exact
保留透明区域中的 RGB 值。为便于压缩,默认为关闭。
-blend_alpha int
此选项使用以十六进制形式指定为 0xrrggbb 的背景颜色,将 Alpha 通道(如果存在)与源颜色混合。之后,alpha 通道将重置为不透明值 255
-noalpha
如果选择此选项,系统会舍弃 Alpha 渠道。
-hint string
指定有关输入图片类型的提示。可能的值包括 photopicturegraph
-metadata string

要从输入复制到输出(如果存在)的元数据列表(以英文逗号分隔)。有效值:allnoneexificcxmp。默认值为 none

请注意,每种输入格式可能不支持所有组合。

-noasm

停用所有汇编优化。

bug

示例

cwebp -q 50 -lossless picture.png -o picture_lossless.webp
cwebp -q 70 picture_with_alpha.png -o picture_with_alpha.webp
cwebp -sns 70 -f 50 -size 60000 picture.png -o picture.webp
cwebp -o picture.webp -- ---picture.png

作者

cwebp 属于 libwebp,由 WebP 团队编写。https://chromium.googlesource.com/webm/libwebp/ 上提供了最新的源代码树

本手册页面是为 Debian 项目编写的(其他人也可使用)。