ComfyUI-PixelArt-Detector 插件保姆级教程
1. 插件简介
插件地址: https://github.com/dimtoneff/ComfyUI-PixelArt-Detector
这个插件就像是一个专门处理像素画的魔法工具箱!它能帮你把普通图片变成复古的像素画风格,就像把现代照片变成80年代游戏机里的画面一样。
主要功能:
- 把图片变成像素画风格(就像马赛克效果,但更精细)
- 换颜色调色板(比如把彩色图片变成只有4种颜色的Game Boy风格)
- 自动检测图片的最佳像素尺寸(找到图片本来的"像素格子"大小)
- 保存成各种格式(WebP、JPEG等)
- 添加抖动效果(让颜色过渡更自然,像老式打印机的效果)
2. 如何安装
- 打开终端或命令提示符
- 进入你的 ComfyUI 安装目录下的
custom_nodes文件夹 - 运行以下命令:
git clone https://github.com/dimtoneff/ComfyUI-PixelArt-Detector
- 重启 ComfyUI
3. 节点详细解析
3.1 PixelArtLoadPalettes 节点(调色板加载器)
这个节点就像一个颜色盒子,里面装着各种复古游戏机的颜色方案,比如Game Boy的绿色调、NES的经典色彩等。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | 调色板文件名列表 | 任选一个 | 选择你想要的颜色风格,就像选择画笔盒里的颜色套装 | 从预设调色板文件中选择一个作为颜色源 | 选择"nintendo-gameboy-bgb-1x.png"就能得到Game Boy的经典绿色调 |
| render_all_palettes_in_grid | render_all_palettes_in_grid | True/False | False | 是否要把所有颜色方案做成一个大拼图来预览 | 是否将所有调色板渲染为网格预览图 | 开启后会生成一个包含所有调色板效果的对比图 |
| grid_settings | grid_settings | 文本说明 | 默认值 | 这是个说明文字,告诉你网格设置的作用 | 网格设置的说明文本 | 这只是说明,不需要修改 |
| paletteList_grid_font_size | paletteList_grid_font_size | 14-120 | 40 | 网格图片上文字的大小,就像调节字体大小 | 网格中调色板名称的字体大小 | 设置为60会让调色板名字显示得更大更清楚 |
| paletteList_grid_font_color | paletteList_grid_font_color | 颜色代码 | #f40e12 | 网格图片上文字的颜色,用颜色代码表示 | 网格中文字的颜色值 | #000000是黑色,#ffffff是白色 |
| paletteList_grid_background | paletteList_grid_background | 颜色代码 | #fff | 网格图片的背景颜色 | 网格的背景颜色 | #000000会让背景变成黑色 |
| paletteList_grid_cols | paletteList_grid_cols | 1-20 | 6 | 网格有几列,就像排列照片时每行放几张 | 网格布局的列数 | 设置为3表示每行显示3个调色板 |
| paletteList_grid_add_border | paletteList_grid_add_border | True/False | True | 是否给每个调色板加边框,就像给照片加相框 | 是否为网格中的每个调色板添加边框 | 开启后每个调色板周围会有边框线 |
| paletteList_grid_border_width | paletteList_grid_border_width | 1-30 | 3 | 边框的粗细程度 | 边框的宽度像素值 | 设置为10会让边框变得很粗 |
3.2 PixelArtAddDitherPattern 节点(抖动图案添加器)
这个节点就像给图片加上老式打印机的点阵效果,让颜色过渡看起来更有复古感。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | IMAGE类型 | - | 要处理的图片,就像放进机器里的原料 | 输入的图像数据 | 连接前面节点输出的图片 |
| pattern_type | pattern_type | bayer/halftone/none | bayer | 抖动的花纹类型,就像选择不同的筛网 | 抖动图案的类型 | bayer是方格状,halftone是圆点状 |
| pattern_order | pattern_order | 1-5 | 3 | 抖动花纹的密集程度,数字越大花纹越细密 | 抖动图案的阶数,影响图案大小 | 设置为1是粗糙的大格子,5是很细密的小格子 |
| amount | amount | 0.0-1.0 | 0.25 | 抖动效果的强度,就像调节滤镜的浓度 | 抖动效果的强度系数 | 0.5会让抖动效果更明显 |
| custom_pattern | custom_pattern | MASK类型 | 可选 | 自定义的抖动花纹,就像用自己设计的模板 | 自定义抖动图案的遮罩 | 可以用自己画的黑白图案作为抖动模板 |
3.3 PixelArtDetectorConverter 节点(像素画调色板转换器)
这是插件的核心节点,就像一个全能的图片处理工厂,能把任何图片变成像素画风格。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | IMAGE类型 | - | 要处理的图片,可以是多张 | 输入的图像数据数组 | 连接前面节点的图片输出 |
| palette | palette | NES/GAMEBOY | GAMEBOY | 选择复古游戏机的颜色风格 | 预设的调色板类型 | GAMEBOY是绿色调,NES是彩色调 |
| pixelize | pixelize | 4种算法 | Image.quantize | 选择把图片变像素画的方法,就像选择不同的加工工艺 | 像素化处理算法 | Image.quantize最快最常用 |
| grid_pixelate_grid_scan_size | grid_pixelate_grid_scan_size | 1-32 | 2 | 网格扫描的格子大小,数字越小越精细但越慢 | 网格像素化的扫描尺寸 | 设置为1是逐像素处理,很慢但最精细 |
| resize_w | resize_w | 0-2048 | 512 | 最终图片的宽度,0表示不改变大小 | 输出图像的宽度 | 设置为256会让图片变小 |
| resize_h | resize_h | 0-2048 | 512 | 最终图片的高度,0表示不改变大小 | 输出图像的高度 | 设置为256会让图片变小 |
| reduce_colors_before_palette_swap | reduce_colors_before_palette_swap | True/False | False | 是否先减少颜色数量再换调色板,就像先简化再上色 | 是否在调色板转换前先进行颜色减少 | 开启后会让最终效果更干净 |
| reduce_colors_max_colors | reduce_colors_max_colors | 1-256 | 128 | 减少到多少种颜色 | 颜色减少的目标颜色数量 | 设置为16会让图片只有16种颜色 |
| apply_pixeldetector_max_colors | apply_pixeldetector_max_colors | True/False | True | 是否自动检测图片的最佳颜色数量 | 是否使用像素检测器确定最佳颜色数 | 开启后会自动找到最合适的颜色数量 |
| image_quantize_reduce_method | image_quantize_reduce_method | 3种方法 | MAXCOVERAGE | 颜色减少的算法,就像选择不同的颜料混合方式 | 图像量化的减色方法 | MAXCOVERAGE对像素画效果最好 |
| opencv_settings | opencv_settings | 文本说明 | 默认值 | OpenCV算法的说明文字 | OpenCV相关设置的说明 | 这只是说明文字,不需要修改 |
| opencv_kmeans_centers | opencv_kmeans_centers | 2种方法 | RANDOM_CENTERS | OpenCV算法选择颜色的方式 | OpenCV K-means聚类的中心点选择方法 | PP_CENTERS更慢但结果更稳定 |
| opencv_kmeans_attempts | opencv_kmeans_attempts | 1-150 | 10 | OpenCV算法尝试的次数,次数越多效果越好但越慢 | K-means算法的尝试次数 | 设置为50会得到更好的颜色但处理更慢 |
| opencv_criteria_max_iterations | opencv_criteria_max_iterations | 1-150 | 10 | 每次尝试的最大循环次数 | 每次尝试的最大迭代次数 | 增加这个值会提高精度但增加处理时间 |
| cleanup | cleanup | 文本说明 | 默认值 | 颜色清理功能的说明 | 颜色清理功能的说明文本 | 这只是说明文字 |
| cleanup_colors | cleanup_colors | True/False | False | 是否清理掉用得很少的颜色 | 是否启用颜色清理功能 | 开启后会去掉占比很小的杂色 |
| cleanup_pixels_threshold | cleanup_pixels_threshold | 0.001-1.0 | 0.02 | 清理颜色的阈值,数字越小保留的颜色越多 | 颜色清理的像素阈值 | 0.01会保留更多颜色,0.05会清理更多颜色 |
| dither | dither | 6种抖动 | none | 抖动效果类型,让颜色过渡更自然 | 抖动算法类型 | floyd-steinberg是经典的抖动效果 |
| paletteList | paletteList | LIST类型 | 可选 | 从调色板加载器传来的颜色列表 | 外部调色板数据列表 | 连接PixelArtLoadPalettes节点的输出 |
3.4 PixelArtDetectorToImage 节点(像素画检测转图片)
这个节点就像一个图片侦探,能自动找到图片的真实像素尺寸,然后输出标准的图片格式。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | IMAGE类型 | - | 要处理的图片 | 输入的图像数据 | 连接前面节点的图片输出 |
| reduce_palette | reduce_palette | True/False | False | 是否要减少图片的颜色数量 | 是否启用调色板减少功能 | 开启后会让图片颜色更简洁 |
| reduce_palette_max_colors | reduce_palette_max_colors | 1-256 | 128 | 最多保留多少种颜色 | 调色板减少的最大颜色数 | 设置为32会让图片只有32种颜色 |
3.5 PixelArtDetectorSave 节点(像素画检测保存)
这个节点就像一个专业的图片保存器,不仅能检测像素尺寸,还能保存成各种格式。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | IMAGE类型 | - | 要保存的图片 | 输入的图像数据 | 连接前面节点的图片输出 |
| filename_prefix | filename_prefix | 文本 | %date%/PixelArt | 保存文件的名字前缀,%date%会自动变成日期 | 文件名前缀模板 | "MyPixelArt"会保存为MyPixelArt_00001_.webp |
| reduce_palette | reduce_palette | True/False | False | 保存前是否减少颜色 | 是否在保存前减少调色板 | 开启后保存的文件颜色更简洁 |
| reduce_palette_max_colors | reduce_palette_max_colors | 1-256 | 128 | 最多保留多少种颜色 | 调色板减少的最大颜色数 | 设置为64会让保存的图片只有64种颜色 |
| webp_mode | webp_mode | lossy/lossless | lossless | WebP格式的压缩方式,无损或有损 | WebP图像的压缩模式 | lossless保证画质,lossy文件更小 |
| compression | compression | 1-100 | 80 | 压缩程度,数字含义根据压缩方式不同 | 压缩质量参数 | 无损模式下100是最小文件,有损模式下100是最高画质 |
| save_jpg | save_jpg | True/False | False | 是否同时保存JPEG格式 | 是否额外保存JPEG格式文件 | 开启后会同时生成.webp和.jpeg两个文件 |
| save_exif | save_exif | True/False | True | 是否保存图片的制作信息(工作流等) | 是否保存EXIF元数据 | 开启后可以通过拖拽图片重新加载工作流 |
| resize_w | resize_w | 0-2048 | 512 | 保存时的图片宽度 | 输出图像宽度 | 0表示不改变尺寸 |
| resize_h | resize_h | 0-2048 | 512 | 保存时的图片高度 | 输出图像高度 | 0表示不改变尺寸 |
3.6 JavaScript扩展功能(前端功能)
这个插件还包含一个前端JavaScript扩展,让你可以直接把生成的WebP或JPEG图片拖拽到ComfyUI界面中,自动加载保存在图片里的工作流。
功能说明:
| 功能名称 | 作用 | 怎么用 |
|---|---|---|
| WebP工作流加载 | 从WebP图片中读取工作流信息 | 直接把生成的.webp文件拖到ComfyUI界面 |
| JPEG工作流加载 | 从JPEG图片中读取工作流信息 | 直接把生成的.jpeg文件拖到ComfyUI界面 |
| EXIF数据解析 | 自动解析图片中的制作信息 | 拖拽图片后会自动重建整个工作流 |
4. 使用技巧和建议
4.1 新手入门建议
- 从简单开始:先用默认设置,只改变调色板类型
- 尺寸设置:如果不想改变图片大小,把宽度和高度都设为0
- 调色板选择:GAMEBOY适合单色调效果,NES适合彩色像素画
4.2 进阶技巧
- 颜色减少:开启"reduce_colors_before_palette_swap"能得到更干净的效果
- 抖动效果:使用floyd-steinberg抖动能让颜色过渡更自然
- 网格预览:使用调色板加载器的网格功能可以一次性预览所有调色板效果
4.3 性能优化
- 算法选择:Image.quantize是最快的,OpenCV.kmeans最慢但效果最好
- 网格扫描:grid_pixelate_grid_scan_size设为1最精细但很慢,建议用2-4
- 尝试次数:OpenCV的attempts和iterations不要设太高,会很慢
5. 常见问题解答
Q1: 为什么我的图片变得很模糊?
A: 可能是resize设置的尺寸太小了,试试把resize_w和resize_h设为0,或者设置更大的数值。
Q2: 颜色转换效果不明显怎么办?
A: 试试开启"reduce_colors_before_palette_swap"选项,或者降低"reduce_colors_max_colors"的数值。
Q3: 处理速度太慢怎么办?
A: 选择"Image.quantize"算法,把grid_pixelate_grid_scan_size设为2以上,减少OpenCV的attempts数值。
Q4: 如何获得更多调色板?
A: 去https://lospec.com/palette-list 下载1px版本的调色板,放到插件的palettes/1x/目录下。
Q5: 保存的图片无法拖拽加载工作流?
A: 确保"save_exif"选项是开启的,并且ComfyUI没有禁用元数据功能。
6. 推荐工作流程
6.1 基础像素画转换
- 加载图片 → PixelArtDetectorConverter → 预览图片
- 调整palette选择不同风格
- 如果需要保存,连接PixelArtDetectorSave节点
6.2 高质量像素画制作
- 加载图片 → PixelArtLoadPalettes(选择调色板)
- → PixelArtDetectorConverter(开启reduce_colors_before_palette_swap)
- → PixelArtAddDitherPattern(添加抖动效果)
- → PixelArtDetectorSave(保存最终结果)
6.3 批量调色板预览
- PixelArtLoadPalettes(开启render_all_palettes_in_grid)
- → PixelArtDetectorConverter
- → 预览图片节点(查看所有调色板效果对比)
7. 总结
这个插件是ComfyUI中处理像素画的神器,包含了6个功能强大的节点,能够满足从简单的调色板转换到复杂的像素画制作的各种需求。通过合理搭配这些节点,你可以轻松制作出各种复古风格的像素画作品。
记住最重要的一点:多实验,多尝试不同的参数组合,每个图片的最佳设置都可能不同!