安装webp
-
安装Hombrew
- 终端运行 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-
用Homebrew安装webp
- 终端运行 brew install webp
webp工具
cwebp - Webp encoder tool
-
描述
- 将一个图像文件压缩成一个webp文件,输入文件可以是PNG,JPEG,TIFF,WebP等等。
-
语法
- cwebp [options] input_file -o output_file.webp
-
选项
- -o string
- 指定输出文件名
- -- string
- 显式地指定输入文件。如果输入文件以'-'开头,这个选项是有用的。这个选项必须最后显示。之后的其他选项将被忽略
- -h,-help
- 简单的使用说明
- -H,-longhelp
- 详细的使用说明
- -version
- 版本号
- -lossless
- 对图像进行无损编码
- -q float
- 指定压缩因素,范围是0-100,默认为75
- -z int
- 在0-9之间切换无损耗压缩模式,0级最快,9级最慢。快速模式产生的文件大小比较慢的文件要大。默认是6。如果-q或者-m之后被使用,-z将无效。
- -alpha_q int
- 在0-100之间指定alpha压缩系数,默认100
- -preset string
- 指定一组默认的参数
- -m int
- 在0-6之间指定压缩方法。默认值为4。
- -resize width height
- 指定宽高
- -crop x_position y_position width height
- 裁剪[x_position, y_position, width, height]区域的图像,裁剪的区域大小必须在源图像大小中
- -mt
- 如果可能的话,使用多线程编码
- -low_memory
- 减少对有损编码的内存使用
- -size int
- 指定目标大小(单位bytes),并不是实际结果的大小,实际结果会通过选择编码的方式,尽可能接近这一目标。如果同时指定了-size和-psnr,-psnr将无效。
- -psnr float
- 指定目标的PSNR(in dB),并不是实际结果的大小,实际结果会通过选择编码的方式,尽可能接近这一目标。如果同时指定了-size和-psnr,-psnr将无效。
- -pass int
- 设置最大传递次数,范围为1-10,默认是1。如果-size或-psnr被使用,而-pass没有被使用,则默认-pass为6。
- -af
- 自动过滤,该算法将花费额外的时间来优化过滤强度,以达到平衡的质量。
- -jpeg_like
- 更改内部参数映射,以更好地匹配JPEG压缩的预期大小。这个标记通常会生成一个与它的JPEG等价的输出文件(用于相同的-q设置),但是不会产生更少的视觉失真。
- -f int
- 指定过滤器的强度,范围在0(不过滤)-100(最大过滤),值越高图像就越平滑,典型的值通常在20-50之间。
- -sharpness int
- 指定过滤的锐度,范围在0(强)-7(弱)之间,默认为0。
- -strong
- 使用强过滤,默认使用。
- -nostrong
- 禁用强过滤。
- -sharp_yuv
- 如果需要的话,使用更精确和更清晰的RGB-YUV转换。注意,这个过程比默认的“快速”RGB-YUV转换要慢。
- -sns int
- 指定空间噪声形成的振幅,范围为0(弱)-100(强),默认为50。
- -segments int
- 在sns算法的分割过程中,改变分区的数量。范围在1到4之间。默认值是4。
- -partition_limit int
- 通过限制某些宏块使用的比特数来降低质量。范围是0(没有降级,默认值)到100(完全降级)。
- -v
- 打印额外的信息。
- -print_psnr
- 计算和报告平均PSNR(峰值信噪比)。
- -print_ssim
- 计算和报告平均SSIM。
- -print_lsim
- 计算和报告本地相似性度量。
- -progress
- 报告编码进展百分比。
- -quiet
- 不打印任何东西。
- -short
- 只打印简短的信息。
- -map int
- 输出额外的编码信息的ascii-映射。可能的映射值范围从1到6。这只是为了帮助调试。
- -s width height
- 指定输入文件实际上是由Y'CbCr实例组成,遵循ITU-R BT.601建议。
- -pre int
- 指定一些预处理步骤。
- -alpha_filter string
- 指定阿尔法平面的预测过滤方法。
- -alpha_method int
- 指定用于alpha压缩的算法:0或1。0表示没有压缩,1使用WebP无损格式压缩。缺省值是1。
- -exact
- 在透明区域保留RGB值。默认是关闭的,以帮助压缩。
- -blend_alpha int
- 该选项将alpha通道(如果存在)与源文件中指定的背景颜色混合为0xrrggbb。然后,alpha通道被重置为不透明值255。
- -noalpha
- 使用该选项将丢弃alpha通道。
- -hint string
- 指定输入图像类型的提示。可能的值是:照片、图片或图表。
- -metadata string
- 将输入文件的员输入复制到输出文件,有效值为all, none, exif, icc, xmp。默认为none。
- -noasm
- 禁用所有汇编优化。
- -o string
-
例子
- 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
dwebp - Webp decoder tool
- 描述
- 将WebP文件解压成一个图像文件,类型可以是JPG,PNG,PAM,PPM,PGM等等。
- 语法
- dwebp [options] input_file.webp
- 选项
- -h
- 打印用法总结。
- -version
- 打印版本号。
- -o string
- 指定输出文件名
- -- string
- 显式地指定输入文件。如果输入文件以'-'开头,这个选项是有用的。这个选项必须最后显示。之后的其他选项将被忽略。
- -bmp
- 将输出格式更改为未压缩的BMP。
- -tiff
- 将输出格式更改为未压缩的TIFF。
- -pam
- 将输出格式更改为PAM(保留alpha)。
- -ppm
- 将输出格式更改为PPM(丢弃alpha)。
- -pgm
- 将输出格式更改为PGM。
- -yuv
- 将输出格式更改为原始YUV。
- -nofancy
- 不适用fancy。
- -nofilter
- 即使是位流需要,也不要使用循环过滤过程。这可能会在不兼容的输出上产生可见的块,但是这会使解码速度更快。
- -dither strength
- 指定0到100之间的抖动强度。
- -nodither
- 禁用所有抖动(默认)。
- -mt
- 如果可能的话,使用多线程进行解码。
- -crop x_position y_position width height
- 裁剪[x_position, y_position, width, height]区域的图像,裁剪的区域大小必须在源图像大小中。
- -flip
- 垂直解码图像。
- -scale width height
- 将解码的图像压缩到指定宽高。
- -v
- 打印额外的信息(特别是解码时间)。
- -noasm
- 禁用所有汇编优化。
- -h
- 例子
- dwebp picture.webp -o output.png
- dwebp picture.webp -ppm -o output.ppm
- dwebp -o output.ppm -- ---picture.webp
- cat picture.webp | dwebp -o - -- - > output.ppm
webpmux - Webp muxing tool
- 描述
- 从静态的webp images创建动态的webp,或者从动态的webp提取静态的webp images。以及管理XMP/EXIF数据和ICC描述文件。
- 语法
- webpmux -get GET_OPTIONS INPUT -o OUTPUT
- webpmux -set SET_OPTIONS INPUT -o OUTPUT
- webpmux -strip STRIP_OPTIONS INPUT -o OUTPUT
- webpmux -frame FRAME_OPTIONS [ -frame ... ] [ -loop LOOP_COUNT ][ -bgcolor BACKGROUND_COLOR ] -o OUTPUT
- webpmux -duration DURATION OPTIONS [ -duration ... ] INPUT -o OUTPUT
- webpmux -info INPUT
- webpmux [-h|-help]
- webpmux -version
- 选项
- -get 选项:GET_OPTIONS
- icc : 获得 ICC profile
- exif : 获得 EXIF metadata
- xmp : 获得 XMP metadata
- frame n : 从动态webp文件中获得第n帧(n=0代表最后一帧率)
- -set 选项:SET_OPTIONS
- icc file.icc : 设置 ICC profile
- exif file.exif : 设置 EXIF metadata
- xmp file.xmp : 设置 XMP metadata
- -strip 选项:STRIP_OPTIONS
- icc : Strip ICC profile
- exif : Strip EXIF metadata
- xmp : Strip XMP metadata
- -duration 选项:DURATION_OPTIONS
- 修改帧的特定间隔的持续时间。这个选项只对动画WebP有效,对单帧文件没有影响。从第一帧开始,0代表最后一帧。
- duration[,start[,end]]
- -duration d : 设置整个动画的持续时间
- -duration d, f : 设置f帧到d帧的持续时间
- -duration d, start, end : 设置开始帧到结束帧的持续时间
- -frame 选项:FRAME_OPTIONS
- 从静态的webp images创建一个动态的webp文件
- file_i +di[+xi+yi[+mi[bi]]]
- file_i : 第i张webp文件
- xi,yi : 该帧图像的偏移量
- di : 到下一帧开始的暂停时间
- mi : 该帧图像的处理方式,0没有背景,1有背景
- bi : 该帧图像的混合方式,+b有混合,-b没有混合
- -loop n
- 循环次数,0代表无限循环,有效范围是0-65535,默认为0
- -bgcolor A,R,G,B
- 画布的背景颜色
- -get 选项:GET_OPTIONS
- INPUT
- webp格式的文件
- OUTPUT (-o)
- webp格式的文件
- 例子
- 添加ICC profile
- webpmux -set icc image_profile.icc in.webp -o icc_container.webp
- 获得ICC profile
- webpmux -get icc icc_container.webp -o image_profile.icc
- Strip ICC profile
- webpmux -strip icc icc_container.webp -o without_icc.webp
- 添加XMP metadata
- webpmux -set xmp image_metadata.xmp in.webp -o xmp_container.webp
- 获得XMP metadata
- webpmux -get xmp xmp_container.webp -o image_metadata.xmp
- Strip XMP metadata
- webpmux -strip xmp xmp_container.webp -o without_xmp.webp
- 添加EXIF metadata
- webpmux -set exif image_metadata.exif in.webp -o exif_container.webp
- 获得EXIF metadata
- webpmux -get exif exif_container.webp -o image_metadata.exif
- Strip EXIF metadata
- webpmux -strip exif exif_container.webp -o without_exif.webp
- 从三张静态的webp图片创建一张动态的webp动画
- webpmux -frame 1.webp +100 -frame 2.webp +100+50+50
-frame 3.webp +100+50+50+1+b -loop 10 -bgcolor 255,255,255,255
-o anim_container.webp
- webpmux -frame 1.webp +100 -frame 2.webp +100+50+50
- 从动态的webp文件中获取第二帧
- webpmux -get frame 2 anim_container.webp -o frame_2.webp
- 添加ICC profile