目录
- 前言
-
- 关于"真·象素"
-
- 1.1 安装 pixelization 插件
- 1.2 使用 pixelization 插件
-
- 制作2D动画
-
- 2.1 下载 AnimeEffects
- 2.2 PS切图
- 2.2 使用 AnimeEffects 制作骨骼动画
- 2.3 导出
- 3 转绘并生成动画
-
- 3.1 批量转绘成像素风
- 3.2 遇到的问题
- 3.3 ★ 结果 ★
- 附录1- ps 生成 gif
- 附录2 - ps 批量添加背景
-
- 方案 1:纯 PS 内置命令(零代码)
- 方案 2:自带"图像处理器"偷懒版
- 方案 3:PS 脚本(jsx)一键搞定(适合经常跑)
- 常见坑 & 小贴士
- 一句话总结
前言
- 在上一篇文章《stable-diffusion试验2-像素人物帧动画1》中,讨论了像素帧动画的一些基础生成办法,以及后续可以尝试的思路。
- 本文进一步进行实验,主要是尝试这个流程:
- step1: 用 SD 生成漫画风N视图
- step2: 用骨骼动画工具生成动作
- step3: 用转绘工具将每一帧转为像素风
1. 关于"真·象素"
具体转绘的方法在《stable-diffusion试验2-像素人物帧动画1》3.2节 的第三个样例有介绍。本节在此基础上进行进一步操作,目的是得到"真·像素图"。
1.1 安装 pixelization 插件
在 stable diffusion 中,有专门生成像素风格的插件,具体安装过程如下。
- 下载 git 仓库
powershell
cd stable-diffusion-webui安装目录/extensions
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui-pixelization.git
- 下载所需模型
下载到 "stable-diffusion-webui安装目录/extensions/stable-diffusion-webui-pixelization/checkpoints/" 目录下面
url | filename |
---|---|
https://drive.google.com/file/d/1VRYKQOsNlE1w1LXje3yTRU5THN2MGdMM/view?usp=sharing | pixelart_vgg19.pth |
https://drive.google.com/file/d/17f2rKnZOpnO9ATwRXgqLz5u5AZsyDvq_/view?usp=sharing | alias_net.pth |
https://drive.google.com/file/d/1i_8xL3stbLWNF4kdQJ50ZhnRFhSDh3Az/view?usp=sharing | 160_net_G_A.pth |
注1:在浏览器下载
注2:安装完启动时我还遇到了启动失败的问题,当时不清楚是 torch 版本的问题还是电脑休眠导致显卡驱动出了问题。我当时将 torch 版本重新下载,并重启电脑才能启动。我怀疑不是我安装的有问题,而是我当时电脑驱动出了问题。这里记录 torch 版本的重装如下:
powershell
pip uninstall torch torchvision torchaudio -y
pip install --upgrade torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2
1.2 使用 pixelization 插件
启动 SD web ui,进入 Extras 页面,找到 Pixelize 进行勾选(注意其他插件不勾),还要勾选 Keep resolution。具体像素大小根据原图大小进行调整,可以自行尝试(从效果来看,这个插件做的事情类似于池化)。
-
样例
我尝试了直接对原始立绘进行像素化、对转绘的像素图进行像素化,结果如下:
从左到右依次是:原始立绘、原始立绘像素化、转绘像素图、转绘图进一步像素化。
个人认为最后一张是合格的真像素图,只需要简单手绘(比如强化一下眼睛)即可。
-
总结:如何生成像素人物
- step1:文生图生成人物5视图
- step2:动画制作工具进行人物动作生成,保存关键帧图片
- step3:对关键帧进行图生图转绘成像素风
- step4:使用 像素插件 转为真像素
- step5:手绘修补像素图
2. 制作2D动画
2.1 下载 AnimeEffects
这个软件支持 windows、mac。如果是linux系统则需要自己研究如何安装。这里我下载 windows 版本的 v1.3.4。
- 网址
类型 | 网址 | 日期 | 版本 |
---|---|---|---|
汉化版 | https://www.dayanzai.me/animeeffects.html | v1.3.4 | 2024-01-10 |
官方 | https://yukusai.itch.io/animeeffects | v1.7 | 2024-08-5 最新的 |
2.2 PS切图
这里不介绍 ps 的用法,只介绍用 ps 干哪些事。
- 原始图片
从 五视图 中截取了侧视图,为后续生成走路动画做准备
- 切图
- 切图是为了得到
- 头部(头发、头、颈部)
- 躯干
- 四肢(每一个肢体一般分为三部分,如:左大臂、左小臂、左手)
- 切图前可以先用 stable diffusion 生成骨骼图,然后调成半透明与原图对齐,这样方便找到每一部分切割的范围
- 切图时会需要补画一些内容,例如被挡住的另一侧手脚、身体
- 注意图层顺序
- 保存 psd 文件
- 切图是为了得到
2.2 使用 AnimeEffects 制作骨骼动画
-
step 0: 语言设置
按下图修改完后,重启即为中文。
-
step 1: 新建项目
-
step 2: 重新组织图层
- 在软件的左下角的 side-view 窗口
- 为整体做一个文件夹,我这里取名为 total (右键可创建文件夹,将所有图层拖进去)
- 注:目的是让所有图层组成一个文件夹对象

- step 3: 快速绘制骨骼
- 首先要选中整体文件夹
- 在做出工具栏中选择 🦴图标,下面会展开,鼠标移上去会显示是干什么用的。在快速搭建骨骼这一步,主要用到 ➕
- 注意点:
- 根节点是胯部,由此向上生长出躯干等,向下生长出腿
- 肩部其实是三个点,由左侧点长出左臂,由右侧点长出右臂
- step 4: 绑定对象
这一步是为了将骨骼和图层绑定起来- 按照图中 1、2 可以开始绑定骨骼
- 在图中,点一下骨骼,再点一下图层名字,会在两者之间出现白色虚线,即完成绑定
- 一个骨骼也可以绑定多个对象

- step 5: 快速验证与修改
- 按下图 1、2 可以开始摆姿势
- 按住骨骼,即可转动
- 在过程中,如果发现转动时图层衔接有问题,则回到 🦴图标,下面有工具可以调整节点位置,或者删除
- step 6: 在关键帧摆动作
- 下方有一条时间轴,拖动下图中红圈标出的这个小圆点,即可拉到某一帧,在关键帧摆动作即可
- 可以看到每个对象都在时间轴上有一个横向轨道
- 例如:对于走路来说,最少需要在三个位置摆好动作
- 一个是最开始右脚在前(手同理,一开始左手在前)
- 然后中间是左脚在前
- 最后恢复到右脚在前(最后一帧可以拷贝第一帧的动作,也就是图中 total 文件夹同一行,第一帧纵向有三个小黑点,右键可拷贝、粘贴)

- step 7: 播放
在时间轨道右边,有一组播放按钮,可以勾选最下面的"循环",然后点击▶播放,验证效果。
2.3 导出
- 由于要用图生图转绘,直接导出 png 序列即可。
- gif 动画展示
3 转绘并生成动画
3.1 批量转绘成像素风
-
提示词
- 正向
masterpiece,best quality,highres,realistic,photographic,1 girl,solo,full body,Hanfu,simple background,black ponytail, purple long-sleeved shirt, dark brown pants,pure white background, - 负向
ng_deepnegative_v1_75t,(badhandv4:1.2),EasyNegative,(worst quality:2),
- 正向
-
批量生成
在图生图页面中,进入 Batch 子页面
- input directory 里面是原始帧动画
- output directory 是转绘后图片的保存位置
-
玄学?
将 img2img 中上传第一帧图像(感觉会影响出图的颜色,不知道是错觉,还是确有其事)
-
其他配置
配置项 | 取值 | 备注 |
---|---|---|
重绘幅度 Denoising strength | 0.55 | |
插件 | control net - one pose | 不需要上传图像,默认以原始的每一帧图像提取骨骼姿态 |
3.2 遇到的问题
-
问题
没有输出到指定路径
-
原因(答案源自AI)
这是 Stable Diffusion WebUI 的「经典坑」之一:
Batch 一旦同时打开 ControlNet,生成结果会被 ControlNet 的"预览图"逻辑截胡,导致图片既不会出现在你指定的输出目录,也不会进 Image Browser,而是被"悄悄"塞到了一些临时/缓存目录里,甚至直接内存丢弃。
-
解决方法
在 Web UI 界面里进行如下操作:
Settings → ControlNet → 找到 "Do not append detectmap to output" 把它勾上→ 重启 Web UI
3.3 ★ 结果 ★
- 通过 ps 将转绘得到的 像素图像序列 转为 gif 用于展示
- 没有进行任何修复工作,如果追求更好的效果,还应该修复颜色问题以及其他细节

附录1- ps 生成 gif
在 Photoshop 中,如果你已经有一系列按帧分好的 PNG 图片,想把它们合成为一个 GIF,可以按照以下步骤操作:
✅ 步骤一:导入 PNG 帧为图层
- 打开 Photoshop。
- 点击菜单栏:文件 > 脚本 > 将文件载入堆栈...
- 在弹出的窗口中点击 "浏览",选中你所有的 PNG 帧(按顺序命名更方便)。
- 勾选 "尝试自动对齐源图像"(可选,如果帧之间有轻微偏移)。
- 点击 "确定",所有 PNG 会被作为图层导入。
注:如果 将文件载入堆栈... 不生效,解决方法如下:
创建 ImportFolderAsLayers.jsx 代码文件,在 PS 中 File ▸ Scripts ▸ Browse... 选择该文件。文件内容如下:
javascript
#target photoshop
app.displayDialogs = DialogModes.NO;
var folder = Folder.selectDialog('选择包含 PNG 的文件夹');
if (!folder) exit();
var files = folder.getFiles('*.png');
if (files.length == 0) { alert('没找到 PNG'); exit(); }
files.sort(); // 按文件名排序
app.preferences.rulerUnits = Units.PIXELS;
var doc = app.open(files[0]); // 以第一张图尺寸为画布
for (var i = 1; i < files.length; i++) {
var tempDoc = app.open(files[i]);
tempDoc.activeLayer.duplicate(doc, ElementPlacement.PLACEATEND);
tempDoc.close(SaveOptions.DONOTSAVECHANGES);
}
✅ 步骤二:打开时间轴(Timeline)
- 点击菜单栏:窗口 > 时间轴。
- 在时间轴面板中,点击 "创建帧动画"(如果不是这个模式,点击中间的倒三角切换)。
- 然后点击右上角的小菜单(三条横线),选择 "从图层建立帧"。
✅ 步骤三:设置每帧的持续时间
- 在时间轴中,每一帧对应一个图层。
- 点击每帧下方的 时间(如 0 秒),设置你想要的持续时间(比如 0.1 秒)。
- 可以按住 Shift 多选帧,统一设置时间。
✅ 步骤四:设置循环方式
- 在时间轴左下角,设置循环方式为 "永远" 或 "一次",根据你的需求。
✅ 步骤五:导出为 GIF
- 点击菜单栏:文件 > 存储为 Web(旧版)...
- 在弹出的窗口中:
- 格式选择 GIF
- 颜色、抖动、损耗等可根据需要调整
- 右侧可以预览动画效果
- 点击 "存储",选择保存位置,完成!
✅ 小贴士
- 命名规范 :PNG 文件最好按顺序命名(如
frame001.png
,frame002.png
),这样导入时顺序不会乱。 - 帧率换算:比如 0.1 秒/帧 ≈ 10fps,0.04 秒/帧 ≈ 25fps。
- 太大? 可以在导出时减少颜色数(比如 128 色)或缩小图像尺寸。
如果你愿意,我也可以给你一个简单的脚本或自动化方法(比如用 ImageMagick),但 Photoshop 手动操作是最直观的方式。
附录2 - ps 批量添加背景
可以,Photoshop 的「动作(Action)+ 批处理(Batch)」就能一次性给整个文件夹里的 PNG 都加上白色背景并重新导出。下面给出最常用、最不容易出错的 3 套方案,按"动手难度"从低到高排列,任选其一即可。全部步骤在 Win/macOS 通用,PS 2020 及以上版本测试通过。
方案 1:纯 PS 内置命令(零代码)
-
先录动作
① 打开任意一张 PNG
② 窗口 → 动作 → 新建动作,取名"加白底",点●开始录制
③ 图层 → 新建 → 图层...(默认点确定,把新建空白层放在最下方)
④ 编辑 → 填充 → 内容选"白色",模式正常,不透明度 100% → 确定
⑤ 图层 → 拼合图像(Flatten Image)
⑥ 文件 → 导出 → 导出为...
-- 格式选 PNG-24
-- 勾选"透明"与否无所谓,因为我们已经拼合了白底
-- 右侧尺寸、品质确认无误后点"导出",选任意路径(此路径仅作模板,批处理时会被覆盖)
⑦ 动作面板点■停止录制
⑧ 动作里只留下 3~7 步,把"打开"和"保存"两条删掉(重要!否则批处理会重复打开/保存)
-
批处理
文件 → 自动 → 批处理...
-- 组:选刚才保存的动作组
-- 动作:选"加白底"
-- 源:文件夹 → 选取放 PNG 的文件夹
-- 勾选"覆盖动作中的打开命令"
-- 目标:文件夹 → 选一个输出文件夹(别和源文件夹相同)
-- 文件命名:文档名称 + 扩展名(小写)即可
-- 全部设好后点"确定",PS 会一张一张自动跑完
方案 2:自带"图像处理器"偷懒版
如果你不想录动作,可以用 PS 自带的"图像处理器"一键转 JPG(白底自动生成),再需要 PNG 的话把后缀改回 .png 即可。
文件 → 脚本 → 图像处理器...
-- 第1步选文件夹
-- 第2步选输出文件夹
-- 第3步存储为 JPEG,品质 10~12,勾选"转换为 sRGB"
-- 右侧"运行动作"里可以选"默认动作"中的"添加白色背景"(没有就自己录一条,同方案1第③④步)
跑完后得到白底 JPG,再批量改扩展名即可。
方案 3:PS 脚本(jsx)一键搞定(适合经常跑)
把下面代码存成 AddWhiteBg.jsx,放进
Win: C:\Program Files\Adobe\Adobe Photoshop 202X\Presets\Scripts
Mac: /Applications/Adobe Photoshop 202X/Presets/Scripts
重启 PS 后,文件 → 脚本 就能看见"AddWhiteBg"。
运行时会弹对话框选"输入/输出"两个文件夹,剩下的全自动。
javascript
#target photoshop
if (app.documents.length !== 0) app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
var inFolder = Folder.selectDialog("选择放PNG的输入文件夹");
if (!inFolder) exit();
var outFolder = Folder.selectDialog("选择输出文件夹");
if (!outFolder) exit();
var fileList = inFolder.getFiles("*.png");
for (var i = 0; i < fileList.length; i++) {
var doc = open(fileList[i]);
var whiteLayer = doc.artLayers.add();
whiteLayer.name = "白底";
whiteLayer.move(doc.backgroundLayer, ElementPlacement.PLACEAFTER);
doc.activeLayer = whiteLayer;
doc.selection.selectAll();
doc.selection.fill(app.foregroundColor.rgb.hexValue = "FFFFFF");
doc.selection.deselect();
doc.flatten();
var saveFile = new File(outFolder + "/" + fileList[i].name.replace(/.png$/i, '') + ".png");
var pngOpts = new PNGSaveOptions();
doc.saveAs(saveFile, pngOpts, true);
doc.close(SaveOptions.DONOTSAVECHANGES);
}
alert("全部完成!共处理 " + fileList.length + " 张");
常见坑 & 小贴士
- 透明像素边缘阴影:如果原图边缘有半透明阴影,加白底后可能会发灰。可先在动作里加一步「图层 → 修边 → 去色黑/白」,再去录制填充白色。
- 颜色配置:批处理前先把"编辑 → 颜色设置"里的 RGB 工作空间固定为 sRGB IEC61966-2.1,避免导出时弹颜色转换对话框。
- 文件名别用中文空格:虽然 PS 2022+ 已支持,但老版本容易报错,统一用英文+下划线最稳。
- 覆盖原图:一定把输出文件夹设成独立路径,防止源文件被覆盖。
- 只想改尺寸不改画布:如果 PNG 本身是非透明"裁切"图,要先「图像 → 画布大小」把画布扩到目标尺寸,再填充白色,否则白底会把原图遮住。
一句话总结
"录一个'新建白色底层→拼合→导出PNG'的动作,再用 文件→自动→批处理 选文件夹"即可,全程 3 分钟搞定,后续拖文件夹就能复用。