2019独角兽企业重金招聘Python工程师标准>>>

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

王亚军,腾讯工程师,负责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 整合万向优图图片管理能力,打造高效图片处理服务

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

转载于:https://my.oschina.net/qcloudcommunity/blog/863997

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

  1. Google开源JPEG压缩算法--Guetzli体验

    Google最近开源了一种新的JPEG图片的压缩算法,称使用 Guetzli 压缩的 JPEG 图像文件比使用现有的方法小 20%~30%.由于项目最近正在研究图片的后期处理功能,所以马上体验了一下. ...

  2. 【小睿精选·第四期】谷歌开源更快、更高效的 TensorFlow 运行时 TFRT

    [小睿精选] [小睿精选]第四弹来啦,本期共收录6条嵌入式资讯信息,希望可以帮到你.欢迎大家在文末留言,唠一唠你关注的话题,说不定下期就有你想要的惊喜! 1.中科蓝讯与阿里"平头哥" ...

  3. 微软Surface RT平板电脑上手体验报告

    昨天晚上,微软中国和苏宁易购在北京,上海,南京,成都,重庆,广州和深圳等全国七个城市开启Surface RT平板电脑首发仪式.今天一大早,微迷网就赶到编辑部附近的苏宁电器城探访Surface RT平板 ...

  4. 中国移动产品用户体验报告

    中国移动产品用户体验报告 本文的目的:向不了解中国移动市场却感兴趣的开发者们介绍市场状况. -- 翻译原文来自Nokia Forum 中国消费者多数为手机的重度使用者.例如:手机的娱乐和上网功能被广泛 ...

  5. 27款开源图片相册管理系统

    singapore singapore是一个开源,多语言支持,模板驱动的图片管理器.它不需要数据库,所有图片信息都存储在CSV文件中. SPGM SPGM(Simple Picture Gallery ...

  6. 谷歌开源 TFGAN,让训练和评估 GAN 变得更加简单

    作者:思颖 概要:训练神经网络的时候,通常需要定义一个损失函数来告诉网络它离目标还有多远. 三年前,蒙特利尔大学 Ian Goodfellow 等学者提出「生成式对抗网络」(Generative Ad ...

  7. 谷歌开源机器学习可视化工具 Facets:从全新角度观察数据

    谷歌开源机器学习可视化工具 Facets:从全新角度观察数据 By 黄小天2017年7月18日 10:51 近日,出于支持 PAIR initiative的目的,谷歌发布了 Facets,一款开源的可 ...

  8. Android Jetpack Navigation 深入体验报告

    Android Jetpack 之 Navigation深入体验报告 前言 当前Android开发中使用Fragment来开发页面已经成为主流做法.Fragment轻量.可控性强等优点让人感觉很香. ...

  9. 【体验干货】产品经理必知:产品体验报告如何写的全而精

    微信ID:tsesup 公众号:pmheaven(产品作坊) 体验产品是PM工作中经常做的事情,企业也常留一些这样的实习作业给面试者,是因为产品体验报告一定程度上直观的反映了面试者的专业水平.求职过程 ...

  10. 谷歌开源下一代推荐系统模拟器:RecSim NG

    谷歌开源下一代推荐系统模拟器:RecSim NG 一元@炼丹笔记 推荐系统是连接用户与各种在线内容的主要接口,因此必须克服用户流行度的问题,这样可以保证公平地为他们服务.为此,在2019年我们发布了R ...

最新文章

  1. 达达集团智能弹性伸缩架构的设计与落地实践
  2. 背景se_SE新作《先驱者》首个内容预告 定于2020年圣诞发售
  3. zoj 1698 Easier Done Than Said?
  4. WebService在开发中的实际问题
  5. uart接口_UART串行总线舵机转接板规格、接线说明 amp; 驱动安装
  6. sharepoint权限操作(记录以备忘)
  7. [转帖]主流硬盘接口都有哪些?
  8. pycharm ubuntu 安装_Nvidia Jetson Xavier 安装配置(ubuntu 18.04)
  9. 0、1、2范数与损失函数正则化
  10. ZJOI 2014 星系调查(推导)
  11. 小程序首次获选世界互联网领先科技成果
  12. zsh重启后环境变量失效
  13. 按键精灵执行cmd命令_如何用cmd运行按键精灵脚本
  14. 八个常用的数据分析方法论
  15. android从assets文件下面复制文件
  16. matlab如何z变换,MATLAB第3章Z变换详解.ppt
  17. ElasticSearch之elasticsearch-users用法及修改集群密码
  18. 紫装の槍使い(トゥーヴァ) / 紫枪(异时层土法)
  19. 降维专题(一):为什么要降维?
  20. Orica 如何维护安全、质量、管理风险、高标准的客户服务和员工福利所需的大量文档和内容

热门文章

  1. AltiumDesigner多通道复用设计教程(亲测可行版本)
  2. Day4 数据分析 Excel图表【零基础】
  3. Gateway 网关路由、断言、过滤
  4. Android开发虚拟机测试没问题,真机调试就出现问题,总是闪退!10秒解决!!
  5. 脑科学发展到今天,距离记忆编辑提取还有多远
  6. bin文件合并工具(UBIN)使用方法
  7. 查看电脑开机关机记录
  8. iTunes12.9以上 自定义铃声 无法拖入 无法添加
  9. 终止python程序的死循环_终的解释|终的意思|汉典“终”字的基本解释
  10. Diverse Team(暴力)