转换原理
- 缩小到网格。 每个像素格取格子内所有原图像素的平均色。
- 调整。 可选的饱和度和对比度。像素画比原照片稍微浓一点更好看。
- 映射到调色板。 每个格子在 OKLab 色彩空间里匹配最接近的调色板颜色。在 OKLab 里,“最接近”和人眼觉得“最像”基本一致。
- 抖动(可选)。 用调色板里的颜色交错排列,模拟调色板本身没有的过渡色。
为什么区域平均比最近邻缩小好
常见的“像素化”做法是用最近邻算法缩小:每个格子只保留一个原图像素,其余全部丢掉。把 4000 px 宽的照片缩到 64 px 宽的网格,每个格子约 62 × 62,也就是大约 3,900 个原图像素,最近邻只挑其中一个。如果恰好挑到高光、一根深色头发或一个噪点,整个格子就变成那个颜色。细线会消失或断成点,网格挪动一个像素,结果就完全不同。
区域平均用上全部 3,900 个像素,每个格子都是那一小块的真实颜色,边缘也留在该在的位置。这就是结果看起来像手绘、而不像出了故障的原因。
网格大小怎么选
- 16 到 32 px: 图标和表情类小图,只有轮廓鲜明的形状能留下来。
- 48 到 96 px: 头像、游戏角色、能认出来的人脸。
- 128 到 256 px: 场景和细致的肖像,更接近马赛克拼贴。
先裁剪,让主体占满画面。人脸只占照片四分之一,就只能分到四分之一的网格。用正方形裁剪可以很快做出头像比例的原图。
调色板
| 调色板 | 颜色数 | 适合 |
|---|---|---|
| 自动 | 2 到 64,从你的图里提取 | 还原原图色彩,什么题材都行 |
| PICO-8 | 16 | 明亮饱和的幻想主机风格 |
| Sweetie 16 | 16 | 柔和、均衡的独立游戏配色 |
| Endesga 32 | 32 | 偏暖、通用,肤色和风景都好看 |
| Game Boy | 4 种绿 | 经典掌机效果 |
| CGA | 4(黑、青、品红、白) | 早期 PC 效果 |
| 1-bit | 2(黑白) | 强烈的图形风格,最好配合抖动 |
自动调色板在 OKLab 里做 k-means 聚类,找出最能代表这张图的颜色。颜色越少,画面越平、越有风格。
抖动
- 无: 色块平整、边缘干净,但渐变会变成一条条色带。
- Floyd–Steinberg: 把每个像素的颜色误差分摊给相邻像素。渐变平滑,带一点颗粒感。
- 有序抖动(Bayer 4×4): 规则的网点图案,老游戏和早期电脑的味道。图案固定在网格上,相似的图出来的纹理一致,适合做地图块和角色。
调色板越小,抖动越重要。Game Boy 和 1-bit 只要有明暗过渡,基本都离不开它。
导出
1 倍导出的 PNG 是真实尺寸,一个像素格对应一个图片像素,游戏引擎和像素编辑器要的就是这个。要发到网上,就导出 2 到 16 倍:工具用最近邻放大,每个像素格都保持清晰的方块。如果直接上传 1 倍的小图,社交网站会用平滑算法放大,整张图都会糊。可选的网格叠加会勾出每个像素格的边界,照着做拼豆、十字绣或地图块时很方便。
更多免费工具见工具页面。
