将任意图片转换成游戏内支持的 40 色、24x24 像素画,并通过鼠标自动填充游戏画盘。
https://www.bilibili.com/video/BV1FYuV6hEBZ
- 图片导入和 24x24 实时预览
crop裁切填满、contain完整留白两种适配方式- 使用截图中提取的 10x4 游戏调色板做 Lab 色彩空间近似
- 自动识别 24x24 画盘边界和当前可见色板
- 自动跳过默认白色背景,按颜色分组填充非白色像素
- 缓存画盘和色板位置,仅在色板滚动后重新识别一次
- 换色时缓慢移动鼠标,并连续长按点击 3 次
- 可选择在绘制时保持工具窗口原位置并置顶显示进度
- Windows 可从下拉框选择具体游戏窗口,仅截图、识别和操作该窗口客户区
- 每次检测都会在
debug/输出带画盘和色盘标记的截图 - 支持从游戏自动读取全部 40 色并保存为
game_palette.json - 检测后弹出截图,可手动拖拽确认画盘和色盘区域
- 绘制和取色只在人工确认的两个区域内识别与操作
- 适配游戏窗口缩放、Windows 125%/150% 等 DPI 缩放
- Windows 使用 PyAutoGUI 控制鼠标,支持左上角紧急停止
- GUI 停止按钮及屏幕左上角紧急停止
可以在 PowerShell 中手动安装,建议使用 MiniConda 管理:
cd pixel_painter
py -3 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python app.pyWindows 注意事项:
- 建议把游戏放在主显示器,画盘和色板必须完整可见。
- 点击“刷新窗口”,从下拉框选择游戏窗口;不选择时使用“全屏自动识别”。
- 游戏和工具应使用相同权限级别。如果游戏以管理员身份运行,工具也需要右键选择“以管理员身份运行”。
- 支持 100%/125%/150%/200% 系统 DPI 缩放,无需改为 100%;绘制过程中不要修改缩放比例、旋转屏幕或切换主显示器。
- Windows 安全软件若拦截鼠标自动化,需要允许 Python 运行。
- 点击“导入图片”,选择适配方式并检查预览。
- 点击“刷新窗口”,在“游戏窗口”下拉框中选择目标游戏。
- 保持游戏的完整画盘和色板可见,点击“检测游戏”。
- 在弹出的截图中检查建议框;点击“圈选画盘”或“圈选色盘”后拖拽重画。
- 红色画盘框应贴合 24×24 方格外边界,绿色色盘框应覆盖完整可滚动色盘,两个框不能重叠。
- 点击“确认区域”。工具会在
debug/额外保存人工确认后的标注图。 - 根据需要勾选“绘制时保持工具窗口当前位置并置顶显示进度”。
- 将工具窗口移到不遮挡画盘和色板的位置,再点击“确认并开始绘制”。
- 绘制期间不要移动或遮挡游戏窗口。需要紧急停止时,将鼠标移到屏幕左上角。
内置颜色与实际游戏不一致,或滑动后提示找不到颜色时:
- 选择正确的游戏窗口。
- 点击“检测游戏”,圈选并确认画盘和色盘区域。
- 手动把游戏色盘滑到最顶部,确保画盘和色盘完整可见。
- 点击“游戏取色”并确认。
- 工具读取顶部 6 行,自动在色盘区域向上滑动一次,再读取底部 6 行。
- 两次截图的重叠两行校验通过后,将 40 色按顺序写入
game_palette.json。 - 重启工具,新调色板会自动用于图片量化、色盘识别和自动绘制。
删除 game_palette.json 并重启工具即可恢复内置调色板。
- 画盘四条边需要完整可见,且色板至少显示两行。
- 开始绘制和游戏取色前,必须通过检测弹窗确认红色画盘框与绿色色盘框。
- 画盘使用人工确认的红框,不再从整张截图重复猜测位置。
- 色盘只会在人工确认的绿框裁剪区域内识别,滑动起点和终点也都限制在绿框内。
- 开始绘制后会缓存画盘和色板位置;绘制过程中不要移动或缩放游戏窗口。
- 保持窗口可见时,程序仅在截图识别瞬间短暂隐藏窗口,随后恢复原位置。
- 选择具体窗口后,每次点击前都会校验窗口客户区;窗口移动、缩放或坐标越界时会立即停止。
- Windows 当前从主显示器截图,游戏需要位于主显示器。
- 当前默认逐像素点击,不使用画盘内拖动画线,以降低越格风险。
- 先确认色板至少完整显示两行,且没有被其他窗口遮挡。
- 点击“检测游戏”前,将游戏放在主显示器并保持画盘四边完整可见。
- 每次检测都会在
debug/生成detection_时间戳.png。 - 蓝框表示实际截图范围,红框表示识别到的 24×24 画盘,绿框和绿色编号表示色盘及颜色索引。
- 检测失败时也会保留截图,可用于检查 DPI、遮挡、画盘误识别或色板主题差异。