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

谷歌大神又出开源新技术啦,这次是对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秒。

相关推荐

图片流量节省大杀器:基于CDN的sharpP自适应图片技术实践

关于Android图片资源瘦身的奇思妙想

Laravel 整合万向优图图片管理能力,打造高效图片处理服务

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

王亚军的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏应用案例

RIOT 与 ImageOptim - 两款 Win 和 Mac 上好用的免费图片优化无损压缩工具

不管你是网站站长、自媒体、博客作者、摄影师、设计师,还是需要在网上分享传输图片/照片的人,都希望自己上传图片耗时更短、图片体积更小,别人浏览时又能更快下载显示出...

2995
来自专栏丑胖侠

《Drools7.0.0.Final规则引擎教程》第1章 Drools简介

1.1 什么是规则引擎 规则引擎是由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决...

6657
来自专栏小詹同学

深度学习入门笔记系列 ( 一 )

本系列将分为 8 篇 。今天是第一篇 ,工欲善其事必先利其器 ,先简单讲讲当前的主流深度学习框架 TensorFlow 及其安装方法 。

772
来自专栏SAP最佳业务实践

想学FM系列(13)-SAP FM模块:预算结构(4)-预算结构配置-层次结构

4)激活多级预算结构 ? 指定财务管理范围激活多级预算结构。如果激活后,在某一年度想要不激活多层级预算结构,需加一条配置,从该这一年度不激活,“激活”参数不选即...

3487
来自专栏AI研习社

Github 项目推荐 | 给黑客使用的机器学习引擎 —— Juice

Juice 是一个为黑客设计的开放的机器学习框架,用于构建经典、深度或者混合的机器学习应用程序。

672
来自专栏互联网杂技

Propel: 由Node.js之父创建的JavaScript科学计算库

Propel 是一个新推出的 JavaScript 科学计算库,它使用图形处理器来支持 JavaScript 中的机器学习和科学计算。

764
来自专栏MixLab科技+设计实验室

以图搜图技术栈

先看个案例: ? 这是什么动画 https://whatanime.ga/ 一个用于通过动画截图找出处的搜索引擎。可以找到跟动画截图相似的动画片截图,并找到动画...

4118
来自专栏小樱的经验随笔

CTF---隐写术入门第一题 SB!SB!SB!

SB!SB!SB!分值:20 来源: 西普学院 难度:中 参与人数:4913人 Get Flag:1541人 答题人数:1577人 解题通过率:98% LSB ...

2747
来自专栏ytkah

利用excel数据透视表实现快速统计相关数据

  昨天ytkah在做数据报表时需要做一些具体统计数字:公司每天都有人申请铅笔、笔记本等一些文具用品,现在想要统计每天申请铅笔多少支、笔记本多少本,如下图所示,...

28210
来自专栏ITCloud的专栏

Pike版本变慢,不慌,看云计算十年老兵教你一招化解

1233

扫码关注云+社区