|
|
|
@ -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服务器地址
|
|
|
|
|