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

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

在使用有损压缩(默认)的情况下,一个小因素会导致质量较低的较小文件。使用 100 值可以实现最佳质量。

对于无损压缩(通过 -lossless 选项指定),较小的因素可以提高压缩速度,但生成的文件也较大。通过使用 100 值来实现最大压缩。

-z int

开启 lossless 压缩模式,指定音量介于 0 到 9 之间,0 表示最快,9 表示最快。与较慢模式相比,快速模式生成的文件大小较大。建议选择 -z 6 作为默认值。此选项实际上是一些有关质量和方法的预定义设置的快捷方式。如果随后使用了选项 -q-m,它们将使此选项的效果失效。

-alpha_q int

指定 Alpha 压缩的压缩系数(介于 0100 之间)。alpha 的无损压缩是使用 100 值实现的,而较小的值会导致有损压缩。默认值为 100

-preset string

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

由于 -preset 会覆盖其他参数的值(-q 除外),因此最好优先采用参数的顺序显示。

-m int

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

-crop x_position y_position width height

将坐标剪裁为左上角带有坐标 (x_position, y_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(以分贝为单位),尝试获取并压缩压缩的输出。压缩程序将多次进行部分编码,以便尽可能接近此目标。如果同时使用 -size-psnr,则以 -size 值为准。
-pass int
设置选项 -size-psnr 所使用的二分法中要使用的最大卡券数。最大值为 10,默认值为 1。如果使用了选项 -size-psnr,但未指定 -pass,则系统将使用默认值 '6' 卡券。
-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 帧内模式,以及最终用于每个子块的预测模式。对于一张非常大的图片,每 16x16 宏块占用 512k 的空间。每个宏块的绝对最小值为 4 位。跳过、片段和模式信息几乎可以占用所有这 4 位(尽管这种情况不太可能发生),这对于非常大的图片来说会带来问题。partition_limit 因子控制最昂贵的模式 (4tra4) 的使用频率。这在达到 512k 限制并显示以下消息时很有用:错误代码:6(PARTITION0_OVERFLOW:分区 #0 太大,无法容纳 512k)。如果使用 -partition_limit 不足以满足 512k 约束条件,则应使用较少的片段,以便为每个宏块节省更多标头位。请参阅 -segments 选项。

记录选项

以下选项可控制输出级别:

-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 建议的原始 Y'CbCr 样本,格式为 4:2:0 线性格式。亮度平面的大小为 width x height
-pre int
指定一些预处理步骤。使用 2 值会在 RGBA-&Yt;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 是 WebP 团队编写的 libwebp。最新的源代码树位于 https://chromium.googlesource.com/webm/libwebp/

本手册页面是针对 Debian 项目编写的(可能可供其他人使用)。