diff --git a/BaiHu/Doc/全网最全SD API调用示例.txt b/BaiHu/Doc/全网最全SD API调用示例.txt index 4ee3f38c..18b038ca 100644 --- a/BaiHu/Doc/全网最全SD API调用示例.txt +++ b/BaiHu/Doc/全网最全SD API调用示例.txt @@ -1 +1,10 @@ -https://blog.csdn.net/Python_anning/article/details/135269356 \ No newline at end of file +https://blog.csdn.net/Python_anning/article/details/135269356 + + +(1) Balanced: 平衡模式,在提示词和ControlNet之间有AI取一个中间值 + +(2) My prompt is more important: 提示词优先,提示词的影响因子更高 + +(3) ControlNet is more important: ControlNet 优先,ControlNet的影响因子更高 + +https://github.com/Mikubill/sd-webui-controlnet/issues/1011 \ No newline at end of file diff --git a/BaiHu/Doc/架构设计.txt b/BaiHu/Doc/架构设计.txt deleted file mode 100644 index 9044d6f8..00000000 --- a/BaiHu/Doc/架构设计.txt +++ /dev/null @@ -1,15 +0,0 @@ - -两层设计: -1、在www.hzkjai.com的主机上部署Python+Flask+Mysql+Redis的WEB程序,用于支撑小程序运行。 -优势:不存在停电的问题,小程序随时有后端代码提供数据支撑。 - -2、在理想办公室部署WebUI+ComfyUI,同时,在此主机上开发一个While(True)的Python代码,不断到 -wwww.hzkjai.com/getTask接口去领取任务,然后运行后通过www.hzkjai.com/SaveTask进行完成标识 -,接口进行计费。 - -3、如果理想办公室因停电、网络等问题无法运行,可以随时在www.hzkjai.com上通过一个功能向调用者反馈目 -前服务器维护中,将稍后再来。 - -# 模板定义规则 -女生的模板都是1.json,2.json,.... 最大是9999.json -而10001.json,10002.json开始时男生的模板 diff --git a/BaiHu/doTask.py b/BaiHu/doTask.py index 7a34b96e..33aa269f 100644 --- a/BaiHu/doTask.py +++ b/BaiHu/doTask.py @@ -11,8 +11,8 @@ from Util.OssUtil import uploadOss from Util.PngUtil import * -# 整体的生成任务 -def runWebUI(model_id, json_data, input_image): +# 文生图服务调用 +def webui_txt_2_img(model_id, json_data, input_image): # 提示词 prompt = json_data['prompt'] # 图片 @@ -63,6 +63,58 @@ def runWebUI(model_id, json_data, input_image): res.append(url) +# 图生图服务调用 +def webui_img_2_img(model_id, json_data, input_image): + # 提示词 + prompt = json_data['prompt'] + # 图片 + args = json_data['alwayson_scripts']['ControlNet']['args'] + pose_image = json_data['pose_image'] + args[0]['input_image'] = encode_image(input_image[0]) + # 如果有特殊的姿态要求,那就用模板指定的姿态图 + if len(pose_image) > 0: + if len(args) > 1: + args[1]['input_image'] = encode_image(pose_image) + else: # 如果没有特殊的姿态要求,那么就统一用一张图片 + if len(args) > 1: + args[1]['input_image'] = encode_image(input_image[0]) + + # 宽度与高度 + width = json_data['width'] + height = json_data['height'] + # 提示词 + json_data['prompt'] = prompt + + # 开始生成图片 + printf("开始生成图片...") + # 设置目标文件夹 + target_folder = "Out" + + # 创建以当前模型命名的目录 + folder = os.path.join(target_folder, 'Images/User/' + str(model_id) + '/') + if not os.path.exists(folder): + os.makedirs(folder) + # 调用生图服务 + response = submit_post(img2img_url, json_data) + # 创建文件名 + png_file = str(uuid.uuid4()) + '.png' + # 创建文件的完整路径 + file_path = os.path.join(folder, png_file) + save_encoded_image(response.json()['images'][0], file_path) + # 清除Exif信息 + clearExif(file_path, file_path) # 清除Exif信息 + # 上传到OSS + key = 'Images/User/' + str(model_id) + '/' + png_file + uploadOss(key, file_path) + # # 生成下载链接 + url = 'http://hzkc.oss-cn-beijing.aliyuncs.com/' + key + # 删除本地文件 + os.remove(file_path) + printf("成功生成1张图片,宽度:" + str(width) + ",高度:" + str(height) + " 地址:" + url) + # 添加到结果集合中 + res.append(url) + + def download_image(image_url, file_path): # 发送GET请求 response = requests.get(image_url) @@ -219,16 +271,20 @@ def get_task(): printf("发现需要处理的" + ("WebUI" if model_type_id == 1 else "ComfyUI") + "任务,model_id=" + str( model_id) + ",task_id=" + str(task_id)) - # WEBUI + # SD_TXT2IMG if model_type_id == 1: # 开始生成 - runWebUI(model_id=model_id, json_data=vjson_data, input_image=input_image) + webui_txt_2_img(model_id=model_id, json_data=vjson_data, input_image=input_image) # COMFY_UI if model_type_id == 2: # 请求 runComfyUI(model_id=model_id, json_data=vjson_data, input_image=input_image) + # SD_IMG2IMG + if model_type_id == 3: + webui_img_2_img(model_id=model_id, json_data=vjson_data, input_image=input_image) + return task_id elif success == 0: printf("现在没有待处理的任务,休息3秒后再试...") @@ -278,7 +334,7 @@ if __name__ == '__main__': # 图生图服务地址 img2img_url = config['webui']['img2img_url'] - # WEBUI服务器地址 + # WEB服务器地址 web_url = config['webServer']['web_url'] # # COMFYUI服务器地址