⚠️ 这是一个非官方翻译网站,与 ImageMagick Studio LLC 无关。准确信息请参阅原文(https://imagemagick.org/webp/)

WebP 编码选项

ImageMagick 的 WebP 图像格式支持下述众多编码选项。默认的编码选项如下:

  • quality = 75
  • alpha-filtering = 1
  • alpha-quality = 100
  • autofilter = 0
  • filter-sharpness = 0
  • filter-strength = 60
  • lossless = 0
  • method = 4
  • pass = 1
  • preprocessing = 0
  • segments = 4
  • sns-strength = 50
  • target-psnr = 0
  • target-size = 0

对于人像、室内拍摄等数码照片,可考虑使用以下 define:

-define webp:sns-strength=80
-define webp:filter-sharpness=4
-define webp:filter-strength=35
-define webp:preprocessing=0

对于自然光下的户外照片,可考虑使用以下 define:

-define webp:sns-strength=80
-define webp:filter-sharpness=3
-define webp:filter-strength=30
-define webp:preprocessing=2

对于具有高对比度细节的手绘或线稿,可考虑使用以下 define:

-define webp:sns-strength=25
-define webp:filter-sharpness=6
-define webp:filter-strength=10

对于小尺寸的彩色图像,可考虑使用以下 define:

-define webp:sns-strength=0
-define webp:filter-strength=0
-define webp:preprocessing=0

对于文本图像,可考虑使用以下 define:

-define webp:sns-strength=0
-define webp:filter-strength=0
-define webp:preprocessing=0
-define webp:segments=2

当指定了 target-psnr 或 target-size 时,ImageMagick 会设置 pass=6。但在没有 target-psnr 或 target-size 的情况下指定 pass 时,并不会设置 target-psnr=40。

当指定了 quality 时,ImageMagick 会将 near_lossless 设置为相同的值。near_lossless 无法直接设置。当 quality 设置为 100 或更大时,ImageMagick 会设置 lossless=1。可以用 -quality 100 -define webp:lossless=false 覆盖此行为。

以下是 WebP 编码选项的完整列表:

选项 说明
alpha-compression=value 对 alpha 平面进行编码: 0 = 无, 1 = 压缩。
alpha-filtering=value alpha 平面的预测滤波方式: 0=无, 1=快速, 2=最佳。
alpha-quality=value alpha 压缩的压缩值(0 到 100)。取值 100 时实现 alpha 的无损压缩,较低的值则产生有损压缩。默认为 100。
exact=true, false 保留透明区域的 RGB 值。为帮助压缩,默认禁用。
auto-filter=true, false 启用时,算法会花费额外时间优化滤波强度,以达到均衡的质量。
emulate-jpeg-size=true, false 返回与 JPEG 相近的压缩,但劣化更少。
filter-sharpness=value 滤波锐度。
filter-strength=value 去块滤波器的强度(0=不滤波 到 100=最大滤波)。取值 0 会关闭所有滤波。值越高,解码图像后所施加的滤波处理强度越大。值越高,图像看起来越平滑。典型值通常在 20 到 50 的范围内。
filter-type=value 滤波器类型: 0 = 简单, 1 = 强力
image-hint=default, photo, picture, graph 关于图像类型的提示。
lossless=true, false 无损耗地编码图像。
low-memory=true, false 减少内存使用。
method=value 使用的压缩方式。它控制编码速度与压缩文件大小、质量之间的权衡。取值范围为 0 到 6。默认为 4。当使用较高的值时,编码器会花费更多时间检查额外的编码可能性并判断质量增益。较低的值可能以更大的文件尺寸和更低的压缩质量为代价换取更快的处理时间。
preprocessing=value 从以下选择: 0=无, 1=segment-smooth, 2=伪随机抖动。
partitions=value 渐进式解码: 选 0 到 3。
partition-limit=value 选 0 表示无质量劣化,选 100 表示最大劣化。
pass=value 为达到目标压缩大小或 PSNR 所进行的最大遍数。
segments=value 从 1 到 4 中选择,使用的分段最大数量。
show-compressed=true, false
sns-strength=value 空间噪声整形的幅度。空间噪声整形(SNS)是一组内置算法的统称,用于决定图像的哪些区域应使用相对较少的比特,以及应将这些比特更好地转移到何处。取值范围从 0(算法关闭)到 100(最大效果)。默认值为 80。
target-size=value 试图达到的压缩输出目标大小(字节)。压缩器会进行多次部分编码遍历,以尽可能接近该目标。
target-psnr=value 期望的最小失真。
thread-level=value 启用多线程编码: 0 = 禁用, 1 = 启用。
use-sharp-yuv=value 如有需要,使用锐利(且较慢)的 RGB→YUV 转换。