爱意满满的作品展示区。
luin

pngdeer — 效果最好的开源的 PNG 压缩库(超过 TinyPNG 8%~12%)

  •  
  •   luin ·
    luin · 4h 27m ago · 817 views

    其实起初只是想试试 AI 的边界能力:我把电脑上所有的 PNG 文件交给 Opus 5.5 ,让它开发一个能超过 TinyPNG 的压缩工具。然后不断打磨(有一些图片总是优化不好,所以要深入分析。另外会有很多人眼测评来纠正 AI 的判断。)

    现在已经完成啦:pngdeer 是一个采用 MIT 协议开源的 Rust PNG 压缩库,支持自动选择画质,提供命令行工具和浏览器本地运行。

    在公开的基准测试中,以相同的 SSIMULACRA2 画质评分比较,文件大小中位数比 TinyPNG 小 8–12%,且超过市面上所有开源项目。

    欢迎 star !

    10 replies  •  2026-10-27 11:29:21 +08:00
    david1025
        1
    david1025  
       3h 56m ago
    可以加个 mcp 功能,让 ai 直接调用
    luin
        2
    luin  
    OP
       3h 55m ago
    @david1025 好想法!这就加 ;)
    zackkk
        3
    zackkk  
       3h 47m ago
    我做过类似的,最后发现去背景特别难,OP 主可以挑战一下
    luin
        4
    luin  
    OP
       3h 43m ago
    @zackkk https://playyy.ai/tools/background-remover 这个效果怎么样?我们团队之前做的(目前是通过模型,还做不到通过算法)
    zackkk
        5
    zackkk  
       3h 12m ago
    @luin 通过模型是另一回事咯。我以为是本地算法
    malagebidi
        6
    malagebidi  
       3h 4m ago
    可以和 shortpixel 比较一下
    luin
        7
    luin  
    OP
       2h 54m ago
    @zackkk 对,这个压缩是通过算法。但是去背景感觉只能通过模型效果才好😄
    luin
        8
    luin  
    OP
       2h 48m ago
    @malagebidi 收到!刚才试了一个图,同画质下 pngdeer 要比 shortpixel 更好:

    - https://share.adastralab.ai/DP1w9S5G
    - https://share.adastralab.ai/ls1HmBrM

    我加到测试集中把几百个图片跑一遍看看
    ddter
        9
    ddter  
       2h 21m ago
    39 张三方对比(体积是压缩后占原图的比例,画质是中位数):

    ┌──────────┬───────────────────┬──────────────────────┬─────────────────────┐
    │ 类别 │ yasuo 体积 / 画质 │ pngquant 体积 / 画质 │ pngdeer 体积 / 画质 │
    ├──────────┼───────────────────┼──────────────────────┼─────────────────────┤
    │ 全部 │ 29.6% / 82.3 │ 32.2% / 87.2 │ 28.7% / 87.6 │
    ├──────────┼───────────────────┼──────────────────────┼─────────────────────┤
    │ 照片 │ 33.4% / 76.2 │ 35.7% / 81.5 │ 30.8% / 83.5 │
    ├──────────┼───────────────────┼──────────────────────┼─────────────────────┤
    │ 抠图照片 │ 28.1% / 80.4 │ 30.5% / 87.3 │ 27.2% / 87.5 │
    ├──────────┼───────────────────┼──────────────────────┼─────────────────────┤
    │ 插画 │ 28.6% / 85.6 │ 31.7% / 86.4 │ 29.6% / 88.0 │
    ├──────────┼───────────────────┼──────────────────────┼─────────────────────┤
    │ 3D 渲染 │ 26.4% / 80.1 │ 32.9% / 87.2 │ 28.7% / 87.2 │
    ├──────────┼───────────────────┼──────────────────────┼─────────────────────┤
    │ 图标 │ 91.6% / 95.1 │ 92.9% / 100 │ 57.9% / 91.0 │
    └──────────┴───────────────────┴──────────────────────┴─────────────────────┘

    总的来说:
    - 文件差不多大,pngdeer 画质高约 5 分。39 张里有 32 张它分数更高,19 张是文件更小、分数也更高。
    - yasuo 的问题在画质,体积没问题。155 张全量跑下来,yasuo 有 7 张跌破 70 分,最差一张抠图只有 59.5 分,色带会很明显。原因是 UPNG 的量化算法比较弱,又没有抖动; pngquant 在 155 张里只有 1 张低于 70 。
    - 图标是个例外:pngdeer 主动把颜色压少,文件小了 34%,画质降到 91 分,人眼看不出来。yasuo 在图标上几乎没压。

    拿我手搓的那个 yasuo.app 跟 lz 的这个对比了下,效果不错质量也不错,就是有点慢。
    你的思路是每张图把 2 到 256 色挨个试,再挑最小的那个,比 yasuo 现在的做法慢很多。
    官网开了多线程,16 线程压这 39 张、共 16MB 大约用了一两分钟。yasuo 现在每张只要 0.05 到 0.3 秒。

    lz 可以优化下速度应该会很能打
    luin
        10
    luin  
    OP
       1h 20m ago
    @ddter 感谢评测,很酷!对感觉要优化一下性能😄
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3276 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 861ms · UTC 04:50 · PVG 12:50 · LAX 21:50 · JFK 00:50
    ♥ Do have faith in what you're doing.