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 可以优化下速度应该会很能打