中文 | English
将 AI 生成的“伪像素画”整理为网格规整的低分辨率 PNG,也支持将普通照片、插画像素化。支持透明背景,图片在本机处理。
左:原图;右:恢复结果。两张图按相同大小展示,右图实际只有 125×93 像素。
网页版打开即可使用。桌面版在 Releases 的 Assets 中下载,无需安装 Python。
| 系统 | 下载文件 | 打开方式 |
|---|---|---|
| Windows 64 位 | RealPixelArt-版本号-win-x64.exe |
双击运行,免安装 |
| Mac,Apple 芯片(M 系列) | RealPixelArt-版本号-mac-arm64.dmg |
打开后拖入“应用程序” |
| Mac,Intel 芯片 | RealPixelArt-版本号-mac-x64.dmg |
打开后拖入“应用程序” |
轻量版使用系统 WebView:Windows 缺少 WebView2 时会提示安装,Mac 需要 macOS 13.3 或更新。旧版保留为 RealPixelArt Electron。正常处理可离线完成,详见 桌面版说明。
- 放入图片:点击“上传图片”或原图窗口,也可以直接拖入文件。
- 点击“生成”:先使用默认设置,程序会自动判断格子大小并恢复像素。
- 按需调整颜色:默认不限制颜色;也可限制数量,或选择色库。颜色调整在恢复之后进行,不会重新划分网格。
- 下载 PNG:默认导出倍数设为 1,保存原生低分辨率图片;设为 2–16,使用最近邻放大,无需重新生成。
需要指定分辨率时,在“局部网格调整”下方勾选“固定像素”,填写 X(宽)× Y(高),再点击生成。程序固定网格的列数和行数,利用原图边缘调整格线位置,然后按原有方式取色;不会将自动生成的结果直接缩放。关闭局部网格调整时,仅调整整体网格起点。
固定模式覆盖完整原图,优先采用指定尺寸,忽略自动搜索间距和强制正方网格。宽高比与原图不同时,输出比例会改变,不会裁剪。每轴允许 1–4096,总像素不超过 100 万,且不能超过原图对应轴的像素数;放大请用“导出倍数”。此模式的网格由用户尺寸约束,不表示检测到了唯一的原始网格。
颜色处理中的“无半透明像素”默认关闭。开启后,不透明度低于 75%(alpha < 192)的像素变为全透明,其余变为全不透明;不改变网格和保留像素的 RGB。可在生成后切换,关闭即可还原处理前的透明度。Python 命令行使用 --no-semitransparent,API 使用 Config(no_semitransparent=True) 或 process_colors(image, no_semitransparent=True)。
安装 Python 3.10 或更新版本,下载源码后,在项目根目录执行:
python -m pip install -e .
python realpixelart.py -i input/lastTour.png结果保存为 output/lastTour.png。默认只生成结果图。
python realpixelart.py -i input/lastTour.png --colors 32 --scale 4 --debug上例限制为最多 32 色,并将结果放大 4 倍。使用 --help 查看全部参数。算法运行依赖只有 NumPy 和 Pillow。
固定输出尺寸:python realpixelart.py -i input/lastTour.png --target-size 128x96。Python API 对应 pixelize(image, Config(target_size=(128, 96)));未指定时保留自动识别。
处理分为四步。网页和桌面版使用原生 JavaScript,Python API 保留独立实现;两者通过相同输入的网格与像素对照测试保持一致:
- 分别计算横纵方向的颜色与透明度变化,完全透明像素的隐藏 RGB 不参与颜色判断
- 结合 FFT 的周期线索和边缘间距提出候选,同时比较半倍、两倍间距,搜索网格起点,并做小范围局部校正。FFT 不直接决定最终格距
- 检查边缘与格线是否吻合;对部分较弱候选,水平垂直连续边段验证,并保护已有的原生单像素细节
- 每格采用中心优先的稳健取色,结合邻近样本检查异常点,保留透明度。限色和色库匹配在这一步之后单独执行
上图来自 bocchi2 的实际处理过程:左为 FFT 频谱,中间红、绿分别表示 X、Y 方向的边缘,右侧红线是最终格子边界的局部放大。
没有可靠网格时,默认尝试估算格距或按保守尺寸像素化;已有的原生像素图会尽量保留。严重模糊、重复纹理和不规则格子仍可能误判,界面中的置信分数是启发式指标,不是正确概率。
感谢 theamusing/perfectPixel。它用 FFT 估计格距、用边缘校正网格再取色的思路,启发了本项目。
RealPixelArt 主要围绕这些环节做了改进:
- 格距选择:比较多个尺度与起点,加入边缘间距和连续边段验证,减少选错倍频、过度降采样的情况。
- 细节与透明度:增加原生像素保护、中心优先的异常点检查,以及 alpha 感知的边缘与取色处理。
- 颜色后处理:将限色、色库匹配与网格恢复分开,调整颜色时保留已恢复的网格。
从左到右为 原图(1536×1024)→ perfectPixel(168×111)→ RealPixelArt(331×219),下排展示相同相对区域的人物细节。图片统一白底、按相同大小显示,低分辨率结果采用最近邻缩放。
在这个样例中,RealPixelArt 保留了更多眼睛、头发和帽沿的细节,perfectPixel 的结果更粗。这也与两者选出的分辨率不同有关:此处使用已有的三张结果图,仅作视觉比较,不代表 RealPixelArt 在所有图片上都更好。
更多实测见 评估记录
参与开发请阅读 贡献指南与代码结构。