名称
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 通道在
0
和100
之间的压缩因数。默认值为75
。在使用有损压缩(默认)的情况下,一个小因素会导致质量较低的较小文件。使用
100
值可以实现最佳质量。对于无损压缩(通过
-lossless
选项指定),较小的因素可以提高压缩速度,但生成的文件也较大。通过使用100
值来实现最大压缩。-z int
开启
lossless
压缩模式,指定音量介于 0 到 9 之间,0 表示最快,9 表示最快。与较慢模式相比,快速模式生成的文件大小较大。建议选择-z 6
作为默认值。此选项实际上是一些有关质量和方法的预定义设置的快捷方式。如果随后使用了选项-q
或-m
,它们将使此选项的效果失效。-alpha_q int
指定 Alpha 压缩的压缩系数(介于
0
和100
之间)。alpha 的无损压缩是使用100
值实现的,而较小的值会导致有损压缩。默认值为100
。-preset string
指定一组预定义的参数,以适合特定类型的源材料。可能的值包括:
default
、photo
、picture
、drawing
、icon
、text
。由于
-preset
会覆盖其他参数的值(-q
除外),因此最好优先采用参数的顺序显示。-m int
指定要使用的压缩方法。此参数用于控制编码速度与压缩文件大小和质量之间的权衡。可能的值介于
0
到6
之间。默认值为4
。如果使用较高的值,编码器将花费更多的时间来检查其他编码可能性并确定质量增益。该值越小,处理速度越快,但文件越大,压缩质量也越低。-crop x_position y_position width height
将坐标剪裁为左上角带有坐标 (
x_position
,y_position
) 且大小为width
xheight
的矩形。此剪裁区域必须完全包含在源矩形内。注意:剪裁会在缩放前应用。-resize width height
将来源大小调整为大小为
width
xheight
的矩形。如果宽度参数或高度参数之一(但不是两个)都为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
,系统将关闭所有过滤功能。 值越大,图片解码后应用的过滤过程强度就越大。该值越高,图片越平滑。典型值通常在20
到50
之间。 -sharpness int
- 指定过滤的锐度(如果使用)。范围是
0
(最清晰)到7
(最弱)。默认值为0
。 -strong
- 使用强过滤(如果由于
-f
选项而使用过滤)。强过滤默认处于启用状态。 -nostrong
- 停用强过滤(如果由于
-f
选项而使用过滤),请改用简单过滤。 -sharp_yuv
- 根据需要使用更准确、更清晰的 RGB-YUV 转换。请注意,此过程比默认的“RGB-YUV 转换”速度慢。
-sns int
- 指定空间噪声形状的振幅。空间噪声变形(简称 sns)是指一般的内置算法集合,用于确定照片的哪个区域应使用相对较少的位,以及在哪里更好地传输这些位。可能的范围是从
0
(算法处于关闭状态)到100
(最大影响)。默认值为50
。 -segments int
- 更改分割 sns 算法期间使用的分区数量。细分受众群应介于
1
到4
之间。默认值为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 编码信息映射。可能的地图值介于
1
到6
之间。这只是为了帮助调试。
其他选项
更高级的选项包括:
-s width height
- 指定输入文件实际上包含遵循 ITU-R BT.601 建议的原始 Y'CbCr 样本,格式为 4:2:0 线性格式。亮度平面的大小为
width
xheight
。 -pre int
- 指定一些预处理步骤。使用
2
值会在 RGBA-&Yt;YUVA 转换期间触发依赖于质量的伪随机抖动(仅限有损压缩)。 -alpha_filter string
- 指定 Alpha 平面的预测性过滤方法。
none
、fast
或best
中的一项(按递增程度由高到低排列)。默认值为fast
。在内部,alpha 过滤使用四种可能的预测(无、水平、垂直、渐变)执行。best
模式将依次尝试每种模式,并选择一个尺寸较小的模式。fast
模式只是尝试形成事先测试,而不测试所有模式。 -alpha_method int
- 指定用于 alpha 压缩的算法:
0
或1
。算法0
表示不压缩,1
使用 WebP 无损格式进行压缩。默认值为1
。 -exact
- 在透明区域中保留 RGB 值。为便于压缩,默认值为关闭。
-blend_alpha int
- 此选项会使用以十六进制表示的背景颜色(以 0xrrggbb 表示)将 Alpha 通道(如果存在)与源混合。之后,alpha 通道会重置为不透明值
255
。 -noalpha
- 使用此选项将舍弃 Alpha 通道。
-hint string
- 指定关于输入图片类型的提示。可能的值包括:
photo
、picture
或graph
。 -metadata string
要从输入复制到输出的元数据(如果存在)的列表(以英文逗号分隔)。有效值:
all
、none
、exif
、icc
、xmp
。默认值为none
。请注意,每种输入格式可能并不支持所有组合。
-noasm
停用所有组装优化。
bug
请向问题跟踪器报告所有错误:https://bugs.chromium.org/p/webp
欢迎使用补丁!如需开始操作,请参阅以下页面:https://www.webmproject.org/code/contribute/submitting-patch/
示例
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 项目编写的(可能可供其他人使用)。