cwebp — 压缩一张图片文件为webp文件
摘要命令行
cwebp [options] input_file -o output_file.webp
描述
cwebp压缩一张图片为WebP格式。输入的数据可以是PNG, JPEG, TIFF, WebP 或者 raw Y’CbCr samples (备注,月小升没看懂)
参数
基本参数:
-o string
制定输出文件名称。如果省略,cwebp将进行压缩,输出静态报告,使用 “-” 作为一个输出名称,将直接输入到文件
-- string
明确制定输入文件。这个选项以 – 开头。这个选项必须出现在最后,任何其他在他后面的选项都会被忽略
-h, -help
帮助手册简单版
-H, -longhelp
帮助手册详情版
-version
打印版本
-lossless
编码图片,不需要进行任何损失。整个图片,包含透明区域,看不见的像素值(R/G/B or Y/U/V)都会被保存。
-near_lossless int
指定无损压缩级别对图片处理预处理。这个参数用来调整像素帮助图片的可压缩性,但是尽可能减少图片可见区域质量。 这个参数会自动触发无损压缩模式。参数范围0-100,典型的数值为60. 记住:有损压缩-q 100 可以达到更好的结果。
-q float
为RGB通道指定压缩参数0-100, 默认值75
如果是在有损压缩中(默认为有损压缩)参数越小,图片质量越低,文件越小。最好的质量参数是100
如是是在无损压缩中(特别是指定了 -lossless 参数),小的参数会获得快的压缩速度,但是生产出较大的文件。最大的压缩值为100.
-z int
https://java-er.com/blog/cwebp-useage/
切换无损压缩模式级别从0-9,0最快,9最慢。速度越快文件越大。比较好的默认值是6. 这个参数是一个预定义压缩质量快捷阐述。如果参数 -q 或者 -m 被随后用到,这个-z 就无效了。
-alpha_q int
为alpha压缩指定一个0-100的数值。alpha无损压缩用100,小于100将产生有损压缩。默认值100.
-preset string
指定一组预定义的值用来区分不同的文件材料。可能的值有default, photo, picture, drawing, icon, text.
由于 -preset 覆盖其他参数的值(除了-q),这个值最好出现在所有参数最前面。
-m int
制定压缩模式。这个参数控制了编码的速度,压缩文件大小,质量。值范围为0-6. 默认4. 值越大,花费时间越大用来检查额外的编码能力和质量。小的值会产生快的压缩速度,大的文件和低的压缩质量。
-resize width height
调整源文件的宽高。如果任意一个宽或者高的参数为0,那么将按比例计算。
-crop x_position y_position width height
从左边顶部的点开始(x_position, y_position)计算来裁切图片。裁切区域必须在原文件图片区域内。
-mt
如果支持,采用多线程编码
-low_memory
通过节省四倍于压缩大小(通常)来减少有损编码的内存使用。 这将使编码变慢,并且输出的大小和失真会稍有不同。 该标志仅对方法3及更高版本有效,在默认情况下处于禁用状态。 请注意,禁用此标志会对比特流产生一些副作用:它将强制执行某些比特流功能,例如分区数(强制为1)。 请注意,使用此选项时,cwebp将打印更详细的比特流大小报告。
有损压缩选项
这些选项仅仅对有损压缩有效(默认情况下,带或者不带alpha)
-size int
为输出文件指定一个目标大小(单位bytes),压缩器将多次压缩以接近这个目标。如果-size 和 -psnr 同时使用, 那么-size 优先
-psnr float
指定目标PSNR(以dB为单位)以尝试达到压缩输出。 压缩程序将通过几次部分编码,以便尽可能接近此目标。 如果同时使用-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,用于存储以下信息:宏块是否被跳过,宏块属于哪个段,是否被编码为4×4帧内或16×16帧内模式;以及最后,将预测模式用于每个子块。对于非常大的图像,每个16×16宏块只有512k的空间。每个宏块的绝对最小值为4位。跳过,分段和模式信息几乎会用完所有这4位(尽管情况不太可能),这对于非常大的图像来说是个问题。 partition_limit因子控制将使用最昂贵的模式(4×4内)的频率。如果达到512k限制并显示以下消息,这将很有用:错误代码:6(PARTITION0_OVERFLOW:分区#0太大,无法容纳512k)。如果使用-partition_limit不足以满足512k约束,则应使用较少的段,以便为每个宏块节省更多的报头位。请参阅-segments选项。