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的压缩效果相对差一些,但转换速度快得多。