BPG调研
目录
- 简介
- 工具
- 兼容性
- 安装
- 效果示例
- 性能
- BPG编解码性能
- 与WEBP对比
本文基于libbpg-0.9.5展开调研
简介
BPG是一种新型的图片格式。其设计初衷在于当图片质量或文件size成为瓶颈时,取代JPEG。其主要特点如下:
- 高压缩比。BPG在quality类似的情形下,比JPEG要小得多。相同大小的图片,使用BMP存储质量远高于JPEG
- 浏览器支持:使用一个很小js解码库(54KB)后,便可被大部分的浏览器所支持。
- 算法:基于HEVC开源的标准视频压缩算法的一个子集实现
- 支持与jpeg相同的chroma格式用于减少压缩过程中的数据丢失。支持alpha通道。支持 RGB, YCgCo和CMYK色彩空间。
- 更大的通道范围支持:原生支持8位和16位通道。
- 支持无损压缩
- 支持多种元数据(如EXIF,ICC profile,XMP)
- 支持动画
工具
兼容性
bpg作为一种新型图片格式,对其支持的工具尚不健全。除了官方推荐工具可用外,像GraphicsMagick、ffmpeg,exiftool等主流多媒体处理软件尚未对其支持。
系统支持
bpg官方发布的工具支持三种系统,具体情况如下:
系统 | 编码 | 解码 | 查看 | 备注 |
---|---|---|---|---|
Winows | bpgenc支持jpg/png=>bpg | bpgdec支持bpg=>png, 但不支持自定义输出文件 |
bpgview支持查看 | ~ |
Mac OS | bpgenc支持png=>bpg | bpgdec支持bpg=>png, 但不支持自定义输出文件 |
没有查看工具 | ~ |
Linux | bpgenc支持png/jpg=>bpg | bpgdec支持bpg=>png | 没有查看工具 | ~ |
浏览器支持
WEBP浏览器:需带上js解码库。
安装
windows
直接下载bpg-0.9.5-win32.zip即可使用
MacOS
Ubuntu
- 安装libpng16以上版本(编译安装)
- 安装libjpeg62*(apt-get install)
- 安装libsdl-image*(apt-get install)
- 编译安装libbpg-0.9.5.tar.gz
效果示例
左边是BPG 效果而右边是JPG
示例地址:http://xooyoozoo.github.io/yolo-octo-bugfixes/#zoo-bird-head&jpg=s&bpg=s
web端显示示例
需要引用对应javascript库:
http://bellard.org/bpg/bpgdec8a.js
完整的html示例
性能
BPG编解码性能
测试场景:
- 数据:线上1000张图片转换而得的各类格式
- 环境:Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
- 工具:libbpg-0.9.5.tar.gz
源图 | 目标图 | 数量 | 失败次数 | 源大小 | 结果大小 | 空间变化(dest-src)/src | 耗时(s) |
---|---|---|---|---|---|---|---|
JPG | BPG | 1000 | 0 | 15M | 8.1M | -46% | 1762 |
PNG | BPG | 1000 | 0 | 103M | 8.1M | -92.1% | 1765 |
BPG | PNG | 1000 | 0 | 8.1M | 96M | +1085% | 92 |
结论:
- 同一张图片内容,JPG,PNG转为BPG后空间显著变小。
- PNG可与BPG自由转换,任意JPG可成功转为BPG。
- PNG/JPG转换为BPG耗时较长,BPG转回PNG相对较快。
与WEBP对比
webp测试场景
- 数据:线上1000张图片转换而得的各类格式
- 环境:Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
- 工具:libwebp 0.4.1
源图 | 目标图 | 数量 | 失败次数 | 源大小 | 结果大小 | 空间变化(dest-src)/src | 耗时(s) |
---|---|---|---|---|---|---|---|
JPG | WEBP | 1000 | 0 | 15M | 9.6M | -36% | 58 |
JPG | BPG | 1000 | 0 | 15M | 8.1M | -46% | 1762 |
PNG | WEBP | 1000 | 0 | 103M | 9.8M | -91% | 66 |
PNG | BPG | 1000 | 0 | 103M | 8.1M | -92.1% | 1765 |
WEBP | PNG | 1000 | 0 | 9.7M | 103M | +962% | 80 |
BPG | PNG | 1000 | 0 | 8.1M | 96M | +1085% | 92 |
结论:
1.相比BPG,WEBP的压缩效果相对差一些,但转换速度快得多。