risc-v中文社区

 找回密码
 立即注册
查看: 2569|回复: 0

Guetzli 图片压缩算法工具

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2022-5-13 13:42:31 | 显示全部楼层 |阅读模式
授权协议    Apache
开发语言    C/C++
开发者       Google
注:Guetzli 使用大量的内存。您应该为每 1MPix 的输入图像提供 300MB 的内存。
注:Guetzli 使用大量的 CPU 时间。您应该计算每 1mpix 的输入映像占用大约 1 分钟的 CPU。
工具使用:guetzli [--quality Q] [--verbose] original.png output.jpg
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 秒。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-4-24 23:14 , Processed in 0.019111 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表