PNG 极限压缩工具 - limitPNG

2016-06-10 19:14:20 +08:00
 BGLL


前段时间由于有对 PNG 图片无损压缩的极端需求,研究了下目前的 PNG 压缩方案,找了很多工具,经过测试,找到个比较极限的压缩流程。最近有在接触 electron ,正好用其做了一个 GUI 的 PNG 的极限压缩工具,类似于 PNGGauntle ,但能比 PNGGauntle 压缩得更小。


说是极限压缩工具,自然是对压缩大小有极限的追求, limitPNG 比对比测试过的同类 PNG 无损软件( PNGGauntle 、 scriptPNG 、 Leanify 、 Caesium 等, pngout 这些就不说了,这些 GUI 压缩工具( limitPNG 也是)都是会用到 pngout 的)能压缩得更小:


(当然对比测试不只测这两张图片,测试过几百张, limitPNG 压缩得都最小)

另外由于极限压缩耗时非常长,一张几百 KB 的图都可能会花费数分钟,可能不符合一般人常用的情景,所以 limitPNG 还提供了“快速”模式,能花极短的时间到达极限 90% 左右的效果。

除了无损压缩, limitPNG 也提供了类似 tinypng 的有损压缩,压缩出来也比同类工具更小,并且提供多级质量供选择:



最后,这是个免费软件:
http://nullice.com/limitPNG
15036 次点击
所在节点    分享创造
86 条回复
fengxing
2016-06-12 04:21:49 +08:00
ui 很好看,但是压缩速度实在是太慢太慢了
murmur
2016-06-12 08:48:03 +08:00
一个工具 30 多 m 啊,这个效率 efficiency...为什么不用.net 做呢
BGLL
2016-06-12 09:21:51 +08:00
@fengxing 快速模式还是挺快的。

@murmur 本来的目的就是试试用 electron 来做东西。
话说 .net 开发的东西,如果要兼顾各个版本 windows ,也有体积大的问题,要么为不同版本 .net framework 编译不同版本,要么自带 .net framework ,要么让用户下载 .net framework ...
dungeonsnd
2016-06-12 10:14:12 +08:00
楼主,你好。
最近我也在研究图片和视频压缩,为了一个需要经常上传、下载图片 /视频的应用优化。
现在图片和视频对于 3G/4G 来说还是太大的。当然优化业务是一方面,很多时候很多人还是想更高的无损压缩。

自认为算法方面没有那些压缩算法大师牛,所以想从简单点的入手。
目前在考虑从文件本身格式以及统计分析、字典同步方面入手,目标是仅针对常见的 PNG/JPG/MOV/MP4 图片视频,希望压缩到原体积的 80%~50%左右。压缩 /解压时间可以适当长,主要考虑 3G/4G 网络的速度,解压时间通过应用内部设计来提高体验。 可以放宽对内存和本地字典的容易要求。
但是自己数学功底比较差,进展缓慢,希望有同样爱好的大牛指点,如果能共同提出个压缩率非常高的无损方法(可能只是一种方法 算不上算法)也好,如果失败了也算是学习过程了。
BGLL
2016-06-12 11:37:37 +08:00
@dungeonsnd 这个工具实际使用的是一些已有的压缩工具组合。我只研究过 PNG 的压缩过程, png 来说 pngwolf 的算法应该说效果最好,你可以参考下。

另外可以考虑用更好的格式代替,比如 bpg 或 webP ,这是目前主流的方法了,客户端需要传统格式图片的时候再转成 传统格式。
要减少传输尺寸,图片来说要体积小使用新出的格式应该来说就可以了,没有很深知识要改进这些新格式的效果还是很难的。

视频只能从压制的参数着手了。
xpol
2016-06-13 10:03:46 +08:00
比 [pngquant]( https://pngquant.org/) 有啥优势?
xpol
2016-06-13 10:07:03 +08:00
看来一下源代码,原来包括 pngquant 。
davin
2016-06-13 16:49:07 +08:00
一直在用 PNGoo ,懒得去敲键盘,点点鼠标就行了。
circsqua
2016-06-14 10:14:09 +08:00
压缩过程需要很久吗,在 Win10 上久久未能完成。
BGLL
2016-06-14 10:32:33 +08:00
@circsqua 图大的话几十分钟都有可能,选快速模式就快了
Kylinsun
2016-06-14 13:17:35 +08:00
mark
circsqua
2016-06-14 14:38:07 +08:00
@BGLL 无损里的“快速”可以,但是“强力”,“极限”和有损里的“低质量”则一直未能完成……
circsqua
2016-06-14 14:38:35 +08:00
@BGLL 图片只有 680K
BGLL
2016-06-14 14:46:09 +08:00
@circsqua 什么版本,窗口左上角 “ beta ”几?
可否发图,我试一试
circsqua
2016-06-14 15:01:38 +08:00
@BGLL 啊,图片是商业开发用,不很方便,还请海涵。是游戏的素材,所以有大量的透明间隙,会不会有关系?
BGLL
2016-06-14 15:14:48 +08:00
@circsqua
应该没什么关系,压缩时间主要跟图片分辨率有关
如果是你最新版本( beta4 ),有可能是你等的不够久....
soratadori
2016-06-14 15:57:27 +08:00
@dungeonsnd 你的想法要实现难度非常非常高*10000
首先现在的图片多数是 jpeg 以及 h264 格式的,想二次无损压缩的可能性几乎为 0 。(压缩率最多不超过 2%,甚至可能会变大 2333)
其次,原体积(h264)的 50~80%已经夸张到爆了好吗,就算是 HEVC 都没有把握能压到 H264 的 50%。
并且,无损压缩体积变小只是相对无损压缩来说的。相比于有损压缩(jpg h264)来说,无损压缩的压缩率弱爆了

如果你考虑二次有损压缩,图片来说已经有很多成熟的工具和算法,搜一下就搜得到。
视频的话,本地解码对机器的要求会极大的提高,手机未必跑得动。即便是电脑,如果是小白用的电脑,电脑上的解码器稀烂那种,也有可能跑不动的。这就是为什么这么多视频网站的视频体积那么大,画质那么烂的原因,这些视频网站都是用低参数来压的。
goldenlove
2016-06-15 13:36:09 +08:00
electron 不是直接可以打包成 Mac 的版本么?
曾经也想过封装个,但 Mac 下已经有个比较好用的 Pngyu: http://nukesaq88.github.io/Pngyu/ 了...
楼主这个主要是 UI 配色够清爽~
BGLL
2016-06-15 13:59:14 +08:00
@goldenlove
界面部分的代码是可以不改直接生成 Mac 版的,但用到的压缩工具二进制文件要在 Mac 下再编译。另外 electron 在 windows 不同版本都有坑,没实际测试还是不好弄。

Pngyu win 上也有,不过只能有损压缩,所以以前用的不多,而且生成的图片还有较多压缩空间。
goldenlove
2016-06-15 14:49:34 +08:00
@BGLL
哈~ 看来对压缩质量满有追求的,期待支持 Mac 平台...
要不干脆开源让大家一起来完善?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/284809

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX