我先问个问题:如果想在ComfyUI里一次生成多张图片,要怎么做?
肯定有人说提高Latent的批次大小的值或者直接增加工作流运行的批次数量。

没错,这样是可以批量出图。
但是,这样做只是基于同一条Prompt,随机变换不同Seed生成多张图片,也就是俗称的「Roll图」。
如果我要用不同的Prompt生成不同的图片呢?
那就需要用到循环了。
在ComfyUI中,我们常用的是Easy-Use节点包里的For循环节点。
For循环能做很多事情,非常强大。
不过,仅针对多Prompt自动生图这一项,有一个快捷方法。在For循环向各位发起脑筋急转弯硬控之前,容我先说说这个。
同样是在Easy-Use包里,有一个很方便的内置循环的节点,叫做Prompt Line(提示词行)。

每一行写一条Prompt,设置好最大行数,再把它接到Prompt输入即可。

最大行数就是循环执行的次数。例如上图中,我一共写了5行提示词,但最大行数设置为4,则第5行的1goat不会被执行,输出结果如下图。

简单吧,不能再方便了。
补充下,如果填写行数大于实际行数,则它会执行到实际的最后一行为止。假设还是上面的Prompt,最大行数填写10,那它其实输出完第5行的1goat就会停止。所以如果咱们单纯就是要把所有Prompt都跑完,直接填个1000就好了。
老规矩,举个实际应用案例吧。
比如,我们可以在前面接一个用于生成文生图Prompt的LLM节点(LLM节点用法参考把工作流拆开揉碎了,带你入门ComfyUI),用DeepSeek输出的美少女写真图片提示词替换掉上面的”1girl”、”1boy”、”1cat”……
像下面这样,我们就可以批量自动生成美女图片了:

Prompt参考:
# Role: AI摄影美学指导 (AI Photography Director)
如果你觉得这样风格不够稳定,显得比较杂乱,我们还可以再稍微优化一下:
# Role: AI系列摄影美学指导 (AI Series Photography Director)
于是,现在我们可以生成套图。

运行多个批次,那就是多组套图。

如果要再完善,后续在这个工作流的基础上,我们还可以再附加上LoRA和ControlNet,获得更好的一致性和动作。
当然,结合反推节点或者用在通义万相这样的视频生成模型上,也完全没有问题。
Prompt Line是一个我非常推荐的多Prompt批量执行节点。
它实际上是把循环内置了,并且自动进行多行Prompt文本的索引,这样你就不用自己手动把工作流接入循环体进行闭环,也不用手动去做索引值的对齐。甚至可以说,多提示词这块,如果就是不愿正经学For循环怎么用,硬要拿它凑合,它还真能凑合。这玩意儿主打就是一个方便、好懂。
但有一说一,局限性还是不小。
首先,前面套图生成工作流的LLM节点部分,我在Prompt写的一直都是生成10张图片,但实际每次运行生成的图片只有6-8张。为什么呢?仔细看截图就能发现,LLM的输出被截断了。上下文窗口就那么长,越复杂的需求,越容易被截断。
所以很多时候只靠Prompt Line,没办法在ComfyUI里配置好了让它自己跑就完事儿。一般都是需要我结合一下飞书多维表格和Excel,先把Prompt写好,再接入到ComfyUI,混搭着用。虽然也还行吧,但是不够优雅。
并且,单看LLM的输出质量,前面我们是只占用一个上下文窗口,一次性生成多张图的Prompt;而如果把LLM节点接在循环体中,则是每次使用完整的上下文窗口应对单独一张图的Prompt生成,效果也会存在差距。
我把LLM节点嵌在For循环的循环体中,又做了两次套图生成。使用的模型跟刚才一样是DeepSeek-V3.2和Z-Image-Turbo,但新生成的这两组图片,角色状态明显比刚才更生动了:


更重要的一点,Prompt Line本身的功能就是负责多提示词的批量执行,所以它只能循环字符串。但实际上,我们还有很多其他的批处理场景,比如批量抠图、批量放大、批量替换、视频首尾帧续杯等等,这些只靠Prompt Line就没法完成了。
下一篇,我们就正经聊聊For循环。
发表回复