小工具知识网

当前位置: 首页 > 行业知识 > 【MomoTalk之Stable Diffusion】新角色登场

行业知识

【MomoTalk之Stable Diffusion】新角色登场

2026-10-26 02:07:43 来源:互联网转载

上一篇博文里实现了调用API来生成爱丽丝的图片,但这还不够,为了满足项目需求,还需要让程序能够自由调用多个角色的LoRA,所以这次,新角色三月七堂堂登场。

优化项目文件结构

在上一篇博文中,由于尚在测试,只是完成了一个简单的py文件,而最终对接时需要提供方法到客户端,因此我把调用api相关的功能全都封装到了子文件夹 ./api 下。

这时候在 call.py 中就可以方便地调用api了,为了接下来允许自由选择人物生图,我提前给生图方法加上了角色名的参数,从这里传参就能立马得到测试结果。

import apicharacters = ["Arisu", "March7th_sticker", "March7th"]test_expression = ['Happily', 'Rub your hands']img_file_Location = api.SD_draw_expression(character_name = characters[0],character_expression = test_expression)print('output image saved to ' + img_file_Location)

Prompt的准备

由于不同的角色会有不同的Prompt,我决定采用Json文件来存储每个角色对应的Prompt,在生图过程中,把角色名和json文件进行比对,就可以获取到目标Prompt。

在civitai上查找三月七的LoRA,找到了普通版和Q版两个风格,不过这些LoRA当然天生和BA的画风不太协调,所以到时候写Prompt我会把BA风格的LoRA一并用上。

接下来我分别把他们写进了json,只要完善好新的生图方法就可以自由地调试:

{    "Arisu":[        {"prompt1": "(masterpiece, best quality:1), 1girl, solo, arisu, halo,"},        {"prompt2": "white background , "}    ],    "March7th_sticker":[        {"prompt1": "(masterpiece, best quality:1), 1girl, solo, pink_hair, chibi, pink_eyes, blue_eyes, multicolored_eyes, earrings,"},        {"prompt2": "white background , "}    ],    "March7th":[        {"prompt1": "(masterpiece, best quality:1), 1girl, solo, march7th, short hair, multicolored_eyes, pink hair, bangs, blue_eyes, long locks, ribbon earrings, shirt, skirt, choker, jacket,"},        {"prompt2": "white background , "}    ]}

至于为什么每个角色有两段Prompt,前半段是角色的描述,后半段是画面背景和LoRA,而中间则是用于插入角色的表情和动作,主要是为了规范。

读取Json

用Python读取Json的方法很简单,这里不赘述,直接上代码:

import jsonimport osdef get_character_data(character_name):    # 从Json文件中找到对应角色,从而设置prompt    path = os.path.dirname(__file__)    with open(os.path.join(path, 'character_prompts.json'), 'r', encoding='utf8') as character_file:        character_data = json.load(character_file)        prompts = []        prompts.append(character_data[character_name][0]['prompt1'])        prompts.append(character_data[character_name][1]['prompt2'])        return prompts

这个方法可以从同级目录下读取刚才的Json文件,并且根据传入的角色名获得该角色对应的两段Prompt,最后以数组形式返回给主方法,而主方法则只需要略微修改就能成功生图。

这一次的工作就以生成的图片告终了。

那么,两种风格的三月七,你更喜欢哪一种呢?欢迎投票选出你的想法[doge]

上一篇:Nucleus Plus源码深度探索,核心技术揭秘与全面解析

下一篇:怎么购买刺激战场服务器?