heydeer/pngdeer
多媒体与设计帮你自动决定画质的 PNG 有损压缩工具,适合不想反复调滑块的人。
如果你经常批量压 PNG,又不想为每张图调画质,这个项目值得一试;但作者给出的对比数字应先当作自测结果看待。
解决什么问题
手里有一批 PNG 素材——应用截图、图标、插画——需要压小,但肉眼又看不出差别。常见做法是打开工具、拖动画质滑块、对比结果,再反复调;TinyPNG 帮你定了画质,但它是在线服务。pngdeer 把滑块换成了自动搜索:从 2 到 256 色调色板、加不加抖动都试一遍,用感知指标给每个候选打分,保留达到画质门槛的最小文件。你只需要运行一条命令或打开一次浏览器,就能拿到一张不用自己判断的压缩图。
有什么不同
核心机制是对调色板和抖动组合做穷举搜索,并在进程内用 SSIMULACRA2 打分,把 90 分视为 1:1 下不可分辨(SSIMULACRA2)。画质由每张图单独决定,而不是一个全局参数,所以图标和照片混在同一批里也不需要分别预设。想固定画质时也可以用 --target 85。
代价是计算量:搜索本身就是产品,所以会比套用固定调色板的压缩器慢;大图先在缩小预览上搜索,再回到全尺寸校验。作者报告在 TinyPNG 同等画质下,中位文件在留出集上小 12%、调参集上小 8%,并明确说明参数在 109 张图上调过、另外 71 张是之后才收集的(基准与方法)。这些是维护者的测量,不是独立验证;由于部分网站截图不能公开,基准重跑只覆盖 180 张中的 155 张。同一份 Rust 代码同时跑命令行和浏览器 WebAssembly,浏览器版不是功能缩水的演示。
谁值得试
适合:需要批量压缩 PNG 界面素材和插画,宁愿相信感知指标而不是逐张肉眼判断的开发者或设计师。也适合希望笔记本和浏览器得到一致结果、且不想上传图片的人——网页版在本地运行。不适合:需要无损 PNG,或需要精确控制文件字节数、需要单一目标值之外的精细画质控制的人;这是面向观感的有损调色板压缩。如果你的流水线依赖某个特定量化器的输出或跨版本的完全可复现,先核对自动选择是否符合预期。
使用条件与边界
README 说明命令行版通过 Homebrew 支持 macOS 和 Linux,从源码构建则用 cargo build --release(项目说明);没有列出 Windows,计划跨平台构建前要先确认。浏览器版上限为 40 百万像素,命令行允许更大,这对经常压缩大尺寸渲染图的人有影响。从源码构建网页版需要 Wasm 工具链,具体写在 web/build.sh 中,不是简单的静态文件。
长期维护主要看版本变化:自动选画质是核心行为,未来版本可能让同样的输入产出不同结果。画质默认值的由来记录在 experiments/palette-feedback,文件出现意外的发糊或色带时可以从那里查起。由于采用有损调色板缩减,细腻的摄影渐变最难处理;评分器会把透明像素分别放在亮、暗背景上判断。
HotRepo 点评
HotRepo 只有一条带日期的观察:2026-10-26 该项目出现在 Rust 新项目榜第 12 名,当时共 126 颗星;这是一个仅一天大的仓库的快照,不是每日增长序列。没有可比的每日榜单历史,因此无法判断热度能否持续。采用前,建议按自己的素材类型核对基准方法,而不是只看 8–12% 这个数字。
Hacker News 讨论
本文由 AI 根据项目 README 生成,更新于 2026年10月26日,以项目官方文档为准。