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

PNG 极限压缩工具 - limitPNG

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


    前段时间由于有对 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  
    OP
       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   ·   实用小工具   ·   2771 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:00 · PVG 20:00 · LAX 04:00 · JFK 07:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.