0%

WebP压缩工具建设

与其他图片格式对比

WebP是一种由Google开发的现代图像格式,旨在提供更高的压缩率和更好的图像质量,同时保持与现有图像格式相似的视觉质量。与传统的JPEG、PNG和GIF格式相比,WebP具有以下优缺点:

优点:

  1. 更高的压缩率:WebP通常比JPEG格式具有更高的压缩率,可以减小图像文件的大小,加快网页加载速度。
  2. 更好的图像质量:相同文件大小下,WebP格式的图像质量通常比JPEG更好,可以减少图像的失真。
  3. 支持透明度:WebP格式支持透明度,可以创建带有半透明效果的图像,而JPEG不支持透明度。
  4. 动态图像支持:WebP格式支持动态图像,可以替代GIF格式,提供更高的压缩率和更好的图像质量。

缺点:

  1. 兼容性:WebP格式相对较新,不是所有的浏览器和应用程序都支持该格式,可能会导致兼容性问题。
  2. 编解码速度:WebP格式的编解码速度可能比JPEG和PNG慢一些,特别是在处理大型图像时。
  3. 动态图像性能:虽然WebP支持动态图像,但在某些情况下可能性能不如GIF格式。

总的来说,WebP格式在压缩率和图像质量方面有优势,特别适合用于网页图像的优化。但在一些特定情况下,如兼容性和动态图像性能方面可能存在一些缺点。

压缩处理

生成WebP图像通常使用Google的官方工具cwebp命令行工具或libwebp C库。
cwebp支持许多参数来控制输出的WebP图像的质量和大小。以下是一些常用的参数:

  • -q <float>:设置输出的图像质量,范围是0(最差)到100(最好)。默认值是75。
  • -r: 帧率
  • -m <int>:设置压缩效率,范围是0(最快)到6(最慢)。更高的值会产生更小但需要更长时间来编码的文件。默认值是4。
  • -lossless:生成无损的WebP图像。
  • -alpha_q <int>:设置透明度通道的质量。更低的值会产生更小的文件但透明度质量更差。
  • -resize <width> <height>:改变图像的大小到指定的宽度和高度。
  • -o <file>:指定输出文件的名称。
  • -v:显示详细的编码信息。
  • -h:显示帮助信息。

例如,以下命令将JPEG图像转换为质量为80的WebP图像:

1
cwebp -q 80 input.jpg -o output.webp

注意,cwebp的所有参数都是可选的。如果你不提供任何参数,cwebp将使用默认的设置来生成WebP图像。

另外,ffmpeg中也集成了cwebp,可以通过以下命令将视频文件转换成WebP图像:

1
ffmpeg -i input.mp4 -vcodec libwebp -vf scale=480:640 -lossless 0 -loop 0 -r 9 -q 8 output.webp

实践应用

背景:线上能将视频文件转成webp动图的工具的转换过程对用户来说都是一个黑盒操作,我们在使用的时候无法控制转换的参数,如转换的帧率、质量等等,这导致有时得到的webp动图不合期望,故这里开发了一个将视频文件转换成webp动图的mac桌面版工具。

项目链接
https://github.com/Darrenyuen/WebPTransTool

相关技术

  • KMP:开发桌面工具
  • 集成ffmep可执行文件:其中集成的cwebp提供了转换能力

效果展示

  1. 导入需要转换的原始视频,目前仅支持mp4文件和mov文件

  2. 导入后会弹出配置选择弹窗,默认配置是帧率为9、质量为8、使用旧编解码器,转换耗时长与视频大小及配置有关
    !

  3. 转换完成后可以看到