Google 最近发布了一款 Jpegli 开源编码库,旨在提高 JPEG 图像的压缩效率。它能够将 JPEG 图像的压缩比率提升至传统方法的 35%,有效加快网页的加载速度。
Jpegli 完全兼容 8-bit JPEG 标准,编码后的图像能在任何常见浏览器、图片编辑器或查看器中打开。它只是对 JPEG 编码技术的改进,并不是一种全新的文件格式。
使用 Jpegli 技术,可以实现更高比率的图像压缩,同时尽可能减少质量损失。这将带来更快的网页加载速度、提升网站图形质量,并降低网络运营成本。此外,Jpegli 还可能会减少对 WebP 图像格式的依赖,尽管 WebP 目前尚未广泛普及。
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
4构建 JPEG XL 软件并运行单元测试:
./ci.sh release
5构建完成后,会在build/tools
目录下生成cjpegli
和djpegli
二进制文件:
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 重新压缩完毕(原 MozJPEG),整体大小从原来的 1.02GB 变成了 633.9MB,缩小了快 40%。大约每天能省2GB 左右的 CDN 流量 ,妥妥的都是钱啊。
最新评论
建议很好,下次继续建议😁
手机微信里有个视频文件,想放到手机edge里,设了文件夹,不知道怎样放进去。
winehq-stable 确实从官方仓库中拿掉了,文章内容已经更新。
实际上就是没有,在原仓库里已经找不到stable版本了,只有devel和另一个s开头的版本