PNG 极限压缩工具 - limitPNG - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
BGLL
V2EX    分享创造

PNG 极限压缩工具 - limitPNG

  •  1
     
  •   BGLL
    nullice 2016-06-10 19:14:20 +08:00 15540 次点击
    这是一个创建于 3414 天前的主题,其中的信息可能已经有所发展或是发生改变。


    前段时间由于有对 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
    第 1 条附言    2016-06-10 23:39:13 +08:00
    win7 请下载 32 位版
    86 条回复    2018-08-15 10:47:41 +08:00
    notgod
        1
    notgod  
       2016-06-10 19:22:15 +08:00
    44MB 太大 差评

    <5M + 封装 .exe 绿色 好评
    BGLL
        2
    BGLL  
    OP
       2016-06-10 19:25:53 +08:00
    @notgod

    用得 electron 尺寸是没办法了,
    shiny
        3
    shiny  
       2016-06-10 19:31:32 +08:00 via iPhone
    对比 tinypng 和智图效果如何呢?
    BGLL
        4
    BGLL  
    OP
       2016-06-10 19:36:58 +08:00   1
    @shiny
    上面有对面图,
    tinypng 是有损压缩, limitPNG 的有损压缩是可以设置品质的,设置为高质量与 tinypng 差不多,有时大一点,低质量比 tinypng 小。


    智图对 PNG 压缩效果很差,当然比智图好
    readonly
        5
    readonly  
       2016-06-10 19:37:35 +08:00 via iPhone
    有意思,最近一直在用 tinypng 感觉已经非常好了,下次试试看!
    BGLL
        6
    BGLL  
    OP
       2016-06-10 19:55:06 +08:00
    @readonly

    tinypng 压缩过的图片,通过 limitPNG 的无损压缩还能变得更小
    Kilerd
        7
    Kilerd  
       2016-06-10 19:55:57 +08:00
    表示 electron 封装的软件能不用就不用。 太大了,跟市面上的几百 K 的软件没得比。
    BGLL
        8
    BGLL  
    OP
       2016-06-10 20:11:41 +08:00
    @Kilerd 确实,所以用 electron 的软件要么要得是大型软件,要么得有其过人之处。
    xupefei
        9
    xupefei  
       2016-06-10 20:15:49 +08:00
    @Kilerd 还有一点,运行时 UI 载入缓慢, CPU 狂飙,多出一堆进程,吃掉一百兆内存。
    BGLL
        10
    BGLL  
    OP
       2016-06-10 20:18:58 +08:00
    @xupefei 这个也是 electron 的锅...
    designer
        11
    designer  
       2016-06-10 20:29:01 +08:00 via iPhone
    谢谢分享。
    设计喵重点收藏对象!
    GPU
        12
    GPU  
       2016-06-10 20:33:28 +08:00
    UI 好漂亮的子.
    fcicq
        13
    fcicq  
       2016-06-10 20:34:19 +08:00
    楼主你直说用了谁家的算法吧.
    fcicq
        14
    fcicq  
       2016-06-10 20:35:53 +08:00
    加一句, 说清楚才能洗清有可能侵犯 GPL 的嫌疑. 啥都不提算什么事.
    BGLL
        15
    BGLL  
    OP
       2016-06-10 20:39:27 +08:00
    @fcicq 官网有 github 的链接,上面会有些,
    fcicq
        16
    fcicq  
       2016-06-10 20:40:29 +08:00
    @BGLL 里面只有 gitattributes 和 gitignore.
    BGLL
        17
    BGLL  
    OP
       2016-06-10 20:41:23 +08:00
    @fcicq 官网有 github 的链接,上面会有写的,现在网不好还没从本地 sync 上去, electron 的项目文件好大
    BGLL
        18
    BGLL  
    OP
       2016-06-10 20:45:12 +08:00
    @fcicq 实际也就是用到得老工具 ,pngout,pngquant,pngwolf,TruePNG,zopflipng,cryopng,ect 不过流程不同,效果不一样
    fcicq
        19
    fcicq  
       2016-06-10 21:01:00 +08:00
    @BGLL 除了刷新了工具之外, 你的项目比 https://github.com/imgo/imgo 对压缩工具的总结做的好在哪里?
    fcicq
        20
    fcicq  
       2016-06-10 21:09:03 +08:00
    楼主你的项目确实侵犯了 pngout 的授权协议. pngout 的二进制文件未经授权不可重分发. 只有这个东西既不开源又需要商业授权.
    BGLL
        21
    BGLL  
    OP
       2016-06-10 21:14:45 +08:00
    @fcicq 压缩效果确实比 imgo 的好
    pngout 这个,我去看看他的 license ,不行就做成让用户去下载的形式,由于 PNGGauntle 捆绑了 pngout 所以没考虑那么多
    fcicq
        22
    fcicq  
       2016-06-10 21:27:49 +08:00
    瞧这里有人在投机取巧... 其实你只要别把二进制塞 repo 里然后这样意思一下也就算了对吧.
    https://github.com/ImageOptim/ImageOptim/blob/master/imageoptim/Makefile
    BGLL
        23
    BGLL  
    OP
       2016-06-10 21:47:50 +08:00
    @fcicq 还有这么玩的...


    我是打算如果不行,就让给用户选择去下下载 pngout ,这样就不算捆绑了
    viosey
        24
    viosey  
       2016-06-10 22:13:43 +08:00 via Android
    打算出 Mac 版吗?
    itfanr
        25
    itfanr  
       2016-06-10 22:14:02 +08:00
    支持
    BGLL
        26
    BGLL  
    OP
       2016-06-10 22:16:14 +08:00
    @viosey 暂时没打算,没 Mac ,只有 OSX 的虚拟机,太卡在虚拟机里折腾不了
    ChiangDi
        27
    ChiangDi  
       2016-06-10 22:18:21 +08:00
    我一直在用这个 https://imageoptim.com
    loggerhead
        28
    loggerhead  
       2016-06-10 22:30:56 +08:00
    有几个疑问或反馈:

    1. 有开源打算吗?
    2. Linux 用户可以用吗?
    3. 页面图片在 iPhone 5S ( iOS 8.4 )下显示有问题
    MOxFIVE
        29
    MOxFIVE  
       2016-06-10 22:42:54 +08:00
    好喜欢 LZ 的 UI 设计风格~

    话说这样转出来的 PNG 是交错格式吗
    BGLL
        30
    BGLL  
    OP
       2016-06-10 22:43:44 +08:00   1
    @loggerhead
    github syncing 中
    由于使用的是现有工具的二进制文件, Linux 下用要把那些工具编译一下,或者找它们的 Linux 版,
    实际上 Linux 下用的话,看看 limitPNG  使用那些工具的流程,写个脚本更快,更方便
    RanchoH
        31
    RanchoH  
       2016-06-10 22:46:53 +08:00


    吓到了……
    BGLL
        32
    BGLL  
    OP
       2016-06-10 22:49:02 +08:00
    @RanchoH 这是什么图片,求原图
    RqPS6rhmP3Nyn3Tm
        33
    RqPS6rhmP3Nyn3Tm  
       2016-06-10 23:08:18 +08:00 via iPad
    如果是极限压缩的话,我觉得用 webP 比较好啊
    BGLL
        34
    BGLL  
    OP
       2016-06-10 23:09:34 +08:00
    @BXIA 能用 webP 的地方毕竟还少,所以这只是 PNG 的极限压缩
    RanchoH
        35
    RanchoH  
       2016-06-10 23:11:07 +08:00
    BGLL
        36
    BGLL  
    OP
       2016-06-10 23:16:00 +08:00
    @RanchoH
    怪不得,原来是 JPG 图片啊,这个工具只能压缩 PNG 的。
    heiybb
        37
    heiybb  
       2016-06-10 23:19:15 +08:00
    不知道什么问题,直接运行不了
    然而电脑中似乎没有缺什么库
    BGLL
        38
    BGLL  
    OP
       2016-06-10 23:38:37 +08:00
    @heiybb WIN7 请使用 32 位版
    ayaseangle
        39
    ayaseangle  
       2016-06-11 00:06:48 +08:00
    nodejs 写的吗?做错 cmd 就好,大概会加入到 assets pipeline 去。而不是用图形工具一张一张来。。。。。
    BGLL
        40
    BGLL  
    OP
       2016-06-11 00:16:40 +08:00
    @ayaseangle
    是的 node.js 。
    目标人群不同吧,爱用脚本的就不需要这个拖个那么大的 electron 的软件了。
    不过还是有很多人需要用 GUI 来的,本质这是个 GUI 工具,给不怎么关心技术的人用。
    用 GUI 也不是一张一张来嘛,可以拖多个文件还是挺方便,子目录也会扫描。
    heiybb
        41
    heiybb  
       2016-06-11 00:27:12 +08:00 via Android
    @BGLL 不好意思,网站上的 tips 太小没注意到
    LazyZhu
        42
    LazyZhu  
       2016-06-11 00:29:07 +08:00
    chztv
        43
    chztv  
       2016-06-11 00:38:14 +08:00
    木有 OSX 版本?
    BGLL
        44
    BGLL  
    OP
       2016-06-11 00:44:12 +08:00
    @heiybb 不,是我的错,到现在也没到 Windows 7 上测试过,据反馈有的人 win7 上 32 位也运行不了,我正下 win7 镜像,等明天去试试看到底怎么回事
    BGLL
        45
    BGLL  
    OP
       2016-06-11 00:45:02 +08:00
    @chztv 木有,木有 mac
    zonghua
        46
    zonghua  
       2016-06-11 00:49:54 +08:00
    electron 只是个显示界面吧,真正处理执行压缩的部分做成命令行工具啊
    kn007
        47
    kn007  
       2016-06-11 01:19:25 +08:00 via Android
    尺寸有点大,赞下开源精神。
    chairuosen
        48
    chairuosen  
       2016-06-11 01:37:44 +08:00
    开源了么?正好想找个 Electron 项目学习下
    kofip
        49
    kofip  
       2016-06-11 01:40:25 +08:00
    Win7 64 位 专业版

    下载了 32bit 64bit 打开都是报错。
    bumz
        50
    bumz  
       2016-06-11 06:10:13 +08:00
    有考虑以后出 Mac 版吗

    开源软件上架收费也是不错的
    bumz
        51
    bumz  
       2016-06-11 06:36:33 +08:00
    压缩了将近半个小时

    baskice
        52
    baskice  
       2016-06-11 08:21:09 +08:00
    BGLL
        53
    BGLL  
    OP
       2016-06-11 09:25:40 +08:00
    @kofip @heiybb 现在 32 位版可以在 win7 上使用了,之前发布的有问题。

    http://77we48.com1.z0.glb.clouddn.com/limitPNG_32_beta2_win7fix.zip

    @baskice
    七牛的直链都下不了吗,试试网盘 http://pan.baidu.com/s/1kV50DF5
    jzhone
        54
    jzhone  
       2016-06-11 13:40:39 +08:00
    用 picpick 在桌面随便截了几张图,分别丢到极限压缩和 tinypng 上,即使使用有损快压缩后的体积都比 tinypng 大,极限压缩也是
    BGLL
        55
    BGLL  
    OP
       2016-06-11 14:03:14 +08:00
    @jzhone
    tinypng 是有损压缩, limitPNG 的“极限”模式压缩是无损压缩, 有损自然比无损压的小。

    “有损快”是速度优先的模式。要比可以用 limitPNG “有损-低质量” 来比,这个模式下我测试过的图没有比 tinypng 大的。不过有损压缩不同图损失画质不同, tinypng 不能设置质量,不是很好比较。

    另外 tinypng 压缩过的图,可以用 limitPNG 的“极限”模式无损压缩进一步缩小体积,虽然减的幅度很小
    jzhone
        56
    jzhone  
       2016-06-11 14:14:12 +08:00
    @BGLL 感谢你的回复,我同事还发现了一个问题,当我在压缩一个文件时,再拖一张图片进去压缩,不会提示当前正在压缩,但读取新图片后压缩按钮就无办法点击下去了,其实这时是图 1 正在压缩,要等图 1 压缩完之后才能按下图 2 的压缩按钮,但提示的压缩前数据及名字就会变成图 2 的了
    BGLL
        57
    BGLL  
    OP
       2016-06-11 14:21:49 +08:00
    @jzhone 这确实这个 BUG ,没考虑周全,目前打算变成压缩进行中时不能添加文件。
    cnsun
        58
    cnsun  
       2016-06-11 15:42:32 +08:00 via Android
    在用 PS 插件压缩,直接保存的时候就压缩了,很方便。
    shutongxinq
        59
    shutongxinq  
       2016-06-11 16:35:14 +08:00
    楼主制作的 UI 很好看!
    dreammes
        60
    dreammes  
       2016-06-11 19:07:18 +08:00 via iPhone
    先收藏了
    fengxing
        61
    fengxing  
       2016-06-12 04:21:49 +08:00
    ui 很好看,但是压缩速度实在是太慢太慢了
    murmur
        62
    murmur  
       2016-06-12 08:48:03 +08:00
    一个工具 30 多 m 啊,这个效率 efficiency...为什么不用.net 做呢
    BGLL
        63
    BGLL  
    OP
       2016-06-12 09:21:51 +08:00
    @fengxing 快速模式还是挺快的。

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

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

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

    视频只能从压制的参数着手了。
    xpol
        66
    xpol  
       2016-06-13 10:03:46 +08:00
    比 [pngquant]( https://pngquant.org/) 有啥优势?
    xpol
        67
    xpol  
       2016-06-13 10:07:03 +08:00
    看来一下源代码,原来包括 pngquant 。
    davin
        68
    davin  
       2016-06-13 16:49:07 +08:00
    一直在用 PNGoo ,懒得去敲键盘,点点鼠标就行了。
    circsqua
        69
    circsqua  
       2016-06-14 10:14:09 +08:00
    压缩过程需要很久吗,在 Win10 上久久未能完成。
    BGLL
        70
    BGLL  
    OP
       2016-06-14 10:32:33 +08:00
    @circsqua 图大的话几十分钟都有可能,选快速模式就快了
    Kylinsun
        71
    Kylinsun  
       2016-06-14 13:17:35 +08:00 via Android
    mark
    circsqua
        72
    circsqua  
       2016-06-14 14:38:07 +08:00
    @BGLL 无损里的“快速”可以,但是“强力”,“极限”和有损里的“低质量”则一直未能完成……
    circsqua
        73
    circsqua  
       2016-06-14 14:38:35 +08:00
    @BGLL 图片只有 680K
    BGLL
        74
    BGLL  
    OP
       2016-06-14 14:46:09 +08:00   1
    @circsqua 什么版本,窗口左上角 “ beta ”几?
    可否发图,我试一试
    circsqua
        75
    circsqua  
       2016-06-14 15:01:38 +08:00
    @BGLL 啊,图片是商业开发用,不很方便,还请海涵。是游戏的素材,所以有大量的透明间隙,会不会有关系?
    BGLL
        76
    BGLL  
    OP
       2016-06-14 15:14:48 +08:00
    @circsqua
    应该没什么关系,压缩时间主要跟图片分辨率有关
    如果是你最新版本( beta4 ),有可能是你等的不够久....
    soratadori
        77
    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
        78
    goldenlove  
       2016-06-15 13:36:09 +08:00
    electron 不是直接可以打包成 Mac 的版本么?
    曾经也想过封装个,但 Mac 下已经有个比较好用的 Pngyu: http://nukesaq88.github.io/Pngyu/ 了...
    楼主这个主要是 UI 配色够清爽~
    BGLL
        79
    BGLL  
    2016-06-15 13:59:14 +08:00
    @goldenlove
    界面部分的代码是可以不改直接生成 Mac 版的,但用到的压缩工具二进制文件要在 Mac 下再编译。另外 electron 在 windows 不同版本都有坑,没实际测试还是不好弄。

    Pngyu win 上也有,不过只能有损压缩,所以以前用的不多,而且生成的图片还有较多压缩空间。
    goldenlove
        80
    goldenlove  
       2016-06-15 14:49:34 +08:00
    @BGLL
    哈~ 看来对压缩质量满有追求的,期待支持 Mac 平台...
    要不干脆开源让大家一起来完善?
    goldenlove
        81
    goldenlove  
       2016-06-15 14:55:11 +08:00
    pngout 我看有别人编译好的 Mac 版本,你直接打包个上来试试呗?
    http://www.jonof.id.au/kenutils
    BGLL
        82
    BGLL  
    OP
       2016-06-15 19:17:42 +08:00
    lisonfan
        83
    lisonfan  
       2016-12-25 23:12:46 +08:00 via iPhone
    77 兆,极限压缩, 6 线程同时进行,不知道要压多久。。。 i5 4200H ,有点爆炸。图片是 jpg 用格式工厂转 png 的
    tammy
        84
    tammy  
       2017-07-29 11:10:45 +08:00
    压缩包下载下来都是坏的
    baskice
        85
    baskice  
       2018-05-19 08:48:25 +08:00
    大佬,这程序还有继续压榨压缩性能的空间吗?
    orangutan92
        86
    orangutan92  
       2018-08-15 10:47:41 +08:00
    20 多 M 的 png 压缩一直卡着不动,我用的 beta4
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1071 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 116ms UTC 23:12 PVG 07:12 LAX 16:12 JFK 19:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86