系统极客一直在努力
专注操作系统及软件使用技能

Google 开源 Jpegli 编译和使用,将 JPEG 图像压缩率提升 35%

Google 最近发布了一款 Jpegli 开源编码库,旨在提高 JPEG 图像的压缩效率。它能够将 JPEG 图像的压缩比率提升至传统方法的 35%,有效加快网页的加载速度。

Jpegli 完全兼容 8-bit JPEG 标准,编码后的图像能在任何常见浏览器、图片编辑器或查看器中打开。它只是对 JPEG 编码技术的改进,并不是一种全新的文件格式。

使用 Jpegli 技术,可以实现更高比率的图像压缩,同时尽可能减少质量损失。这将带来更快的网页加载速度、提升网站图形质量,并降低网络运营成本。此外,Jpegli 还可能会减少对 WebP 图像格式的依赖,尽管 WebP 目前尚未广泛普及。

jpegli 在 2.8 BPP 时获得了比 libjpeg-turbo 在 3.7 BPP 时更高的 ELO 评级,而 libjpeg-turbo 的比特率比 jpegli 高出 32%

Jpegli 编码技术的压缩比率提升达到了 35%,相较于 MozJPEG 等其他编码器,这无疑是一个巨大的飞跃。MozJPEG 相比传统 JPEG 压缩比率仅提升了 20%。

Jpegli 的核心技术来自于改进的 JPEG XL 自适应量化启发式算法。虽然 JPEG XL 作为一种新一代文件格式,曾在 Chrome 浏览器中进行过短期测试,但因维护问题而终止。

此外,Jpegli 还引入了一系列新技术,包括一套优化的量化矩阵集,能够在压缩过程中保持图像质量。即便在 10+ bits 编码下,Jpegli 仍能保持与 8-bit 的兼容性。

如果应用程序或浏览器支持 Jpegli 解码,就能显示 10+ bits 的图像;如果使用其他解码方法,图像将以 8-bit 显示。

Jpegli 作为一个开源项目,任何人都可以在 Github 上免费获取它来编码和解码图像。它带来的高压缩比有望显著降低 Google Photos 等服务的运营成本,同时不影响图像质量和用户体验,预计 Google 旗下的服务会率先采用。

在 Linux 中编译和使用 Jpegli

以 Ubuntu 作为示例。

1安装编译工具链:

sudo apt install build-essential git ninja-build cmake clang doxygen graphviz pkg-config libjpeg-dev libpng-dev libwebp-dev libavif-dev

2将 JPEG XL 项目克隆到本地:

git clone https://github.com/libjxl/libjxl.git
cd libjxl

3执行deps.sh脚本安装相关依赖:

./deps.sh
执行 deps.sh 脚本安装 libjxl 相关依赖项
执行 deps.sh 脚本安装 libjxl 相关依赖项

4构建 JPEG XL 软件并运行单元测试:

./ci.sh release

5构建完成后,会在build/tools目录下生成cjpeglidjpegli二进制文件:

cd build/tools
ls -l cjpegli djpegli

其中cjpegli用于压缩,djpegli用于解码。

查看编译好的可执行文件
查看编译好的可执行文件

使用示例

例如有一个/demo/img/目录中的所有.jpg图片要使用cjpegli进行压缩,可以使用以下脚本:

#!/bin/bash
# 源目录和目标目录
src_dir="/demo/img"
dest_dir="/demo/img_output"
# 遍历所有的.jpg和.jpeg文件
find "$src_dir" -type f \( -name "*.jpg" -o -name "*.jpeg" \) | while read src_path; do
  # 计算目标路径,保持原始扩展名
  dest_path="${src_path/#$src_dir/$dest_dir}"
  dest_path_dir=$(dirname "$dest_path")
  # 如果目标目录不存在,则创建
  if [ ! -d "$dest_path_dir" ]; then
    mkdir -p "$dest_path_dir"
  fi
  # 使用cjpegli转换图片(路径用你实际的)
  /usr/local/src/libjxl/build/tools/cjpegli "$src_path" "$dest_path"
done
执行 jpegli 批量压缩
执行 jpegli 批量压缩
Ubuntu
压缩前后大小对比,效果感人

对比了下处理之后的大小,效果还是很好的。

本站图片已经全部采用 jpegli 重新压缩完毕(原 MozJPEG),整体大小从原来的 1.02GB 变成了 633.9MB,缩小了快 40%。大约每天能省2GB 左右的 CDN 流量 ,妥妥的都是钱啊。

赞(4) 赞赏

评论 抢沙发

微信赞赏