文档章节

谷歌开源图片压缩算法Guetzli实测体验报告

腾讯云加社区
 腾讯云加社区
发布于 2017/03/21 16:33
字数 1163
阅读 935
收藏 39

作者 | 王亚军 编辑 | 宋秉金

王亚军,腾讯工程师,负责OMG无线新闻、腾讯视频图片服务等的业务运维工作。

阅读原文,更多技术干货,请访问腾云阁


谷歌大神又出开源新技术啦,这次是对JPEG格式的图片采用全新算法重新编码,输出的图片还是JPEG但是图片大小明显缩小,而质量不但没有损失,甚至还更加优化,速速来体验一把。

一、环境安装

下载谷歌开源软件,编译安装以后实际上是一个bin工具。输入图片,输出jpeg格式图片。

项目地址:https://github.com/google/guetzli

文档下面有写Ubuntu、Arch Linux、windows、macOS的安装方式。我们以 Ubuntu 系统为例,介绍如何安装 guetzli。

首先,克隆谷歌的项目文件:

git clone https://github.com/google/guetzli.git

然后,安装 libpng 软件包:

sudo apt-get install libpng-dev
cd guetzli

然后直接 make ,生成bin文件,强大的开源工具 ./bin/Release/guetzli 于是就生成了。

二、实战测试

guetzli的使用比较简单,参数很少。默认采用95的质量,也可以通过 -quality 来指定大于等于84的质量,如果要小于84,需要修改源码。输入必须是符合转换要求的图片,输出则是jpeg格式图片。

什么是符合要求的图片?

官方说明:

Only YUV color space input jpeg is supported

实测发现,使用透明通道的png图、非YUV的jpeg比如黑白图、gif图都是不能转换的

guetzli效果如何?

批量实测1292张图片。使用默认参数,也就是原图的95%质量。

1185张转换成功,占比91.7%,其中3张png转换jpeg以后图片比原图更大,占比0.2%。107张无法转换,占比8.3%。

原图平均大小33KB,guetzli压缩后23.4KB,平均压缩率29%,平均每张耗时7956毫秒。

单张最大的图片3.76MB,guetzli压缩后2.55MB,压缩率31.5%,耗时976949毫秒(16分钟)。

单张最小的图片757B,guetzli压缩后603B,压缩率20%,耗时65毫秒。

另外借用国外媒体报道中使用的对比图片,直观地感受下压缩后的效果:

左边是原图,中间是 libjpeg 压缩后,右边是使用 guetzli 压缩后。

guetzli的资源消耗如何?

官方文档说,1MPIX的图片处理需要消耗300M内存。

实测一个1MB大小1920x2560的图片,有4.9MPIX。理论消耗内存1474MB,实际消耗1009MB内存,实际与理论基本相符。由此看出这个工具是个内存消耗大户,60G内存只够处理200MPIX,也就是同时处理40张左右的1920x2560图片。

CPU消耗则一直是100%单核占用。当然实际使用多核机器可以同时跑多个进程。有多少核就能跑多少个guetzli任务。

压缩图片耗时跟图片大小程离散相关,图片越大,耗时越久:

测试环境使用的是8核16G内存的机器。单核平均处理23KB的图片需要约8秒钟,这个耗时比较长,注定无法进行在线实时压缩。

三、优劣对比

guetzli的优势在哪?

实测对质量在90或以下的jpg图片,guetzli输出的新图质量不会降低。而实际压缩率能够达到平均压缩率29%。

兼容性比较好,输出的jpeg格式图片通用性非常高。没有webp、sharpp那种协议不兼容的困扰。

在客户端jpeg格式的图片编解码速度比其他私有协议快很多。

guetzli有哪些劣势?

guetzli处理类型局限性,并不能应对全部类型的图片。只能处理YUV颜色编码的图片

时效性较差,图片越大处理越慢。1MB的图片处理需要291秒,本次测试平均23KB的图片需要8秒。


相关推荐:

  1. 图片流量节省大杀器:基于CDN的sharpP自适应图片技术实践
  2. 关于Android图片资源瘦身的奇思妙想
  3. Laravel 整合万向优图图片管理能力,打造高效图片处理服务

阅读原文,更多技术干货,请访问腾云阁

© 著作权归作者所有

共有 人打赏支持
腾讯云加社区
粉丝 78
博文 99
码字总数 244836
作品 0
深圳
[翻译]图像技术新闻: Xamarin Kimono, Google Guetzli和Draco

原文链接:https://www.infoq.com/news/2017/03/kimono-guetzli-draco?utmsource=infoq&utmcampaign=userpage&utm_medium=link InfoQ中文翻译:http://www.infoq.com/cn/news/2017/03/kimono......

EchoZhou
2017/04/05
0
0
Google 开源图像算法工具 Guetzli,高质量压缩图片

Google 又开源了,这次开源了一款图像算法工具 Guetzli。Guetzli,在瑞士德语中是“cookie(曲奇)”的意思,是一个针对数码图像和网页图像的 JPEG 编码器,能够通过产生更小的 JPEG 文件来达...

王练
2017/03/17
16.4K
38
高质量压缩图片算法工具--Guetzli

Guetzli,在瑞士德语中是“cookie(曲奇)”的意思,是一个针对数码图像和网页图像的 JPEG 编码器,能够通过产生更小的 JPEG 文件来达到更快的在线体验,并且同时保持与当前浏览器,图像处理...

匿名
2017/03/17
4.9K
4
给程序员新年巨献:Google最热门60款开源项目

  1机器学习系统 TensorFlow   TensorFlow 是谷歌的第二代机器学习系统,据谷歌说,在某些基准测试中,TensorFlow 的表现比第一代的 DistBelief 快了 2 倍。TensorFlow 内建深度学习的扩...

奋斗在IT
01/07
0
0
【掘金小报】第十二期 一起来做个微信群管理机器人

掘金小报主打分享优质深度技术内容,技术内容分:前端、后端、Android、iOS、产品设计、工具资源和一些有趣的东西。 与标题相关的文章在工具资源:LCBot:微信群管理机器人 前端 基于 Vue JS...

膜法小编
2017/05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
58分钟前
0
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
0
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部