PERF 修图节点改为生/修图节点
This commit is contained in:
parent
ed5ceae99c
commit
d7c49f25c2
|
|
@ -85,8 +85,8 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
|||
"Jinja2RenderTemplate": "Jinja2格式Prompt模板渲染",
|
||||
"JMGestureCorrect": "人物侧身图片转为正面图-即梦",
|
||||
"ModalClothesMask": "模特指定衣服替换为指定颜色",
|
||||
"ModalEditCustom": "自定义Prompt修改图片",
|
||||
"ModalMidJourneyGenerateImage": "Prompt修图",
|
||||
"ModalEditCustom": "Prompt生/修图",
|
||||
"ModalMidJourneyGenerateImage": "Prompt生/修图",
|
||||
"ModalMidJourneyDescribeImage": "反推生图提示词",
|
||||
"JMCustom": "Prompt生视频",
|
||||
"VideoMerge":"顺序合并视频"
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ class ModalClothesMask:
|
|||
RETURN_NAMES = ("image",)
|
||||
FUNCTION = "process"
|
||||
OUTPUT_NODE = False
|
||||
CATEGORY = "不忘科技-自定义节点🚩/图片/Gemini图像编辑"
|
||||
CATEGORY = "不忘科技-自定义节点🚩/图片/Gemini"
|
||||
|
||||
def process(self, image: torch.Tensor, mask_color: str, clothes_type: str, endpoint: str):
|
||||
try:
|
||||
|
|
@ -133,21 +133,23 @@ class ModalEditCustom:
|
|||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"image": ("IMAGE",),
|
||||
"prompt": ("STRING", {"default": "将背景去除,输出原尺寸图片", "multiline": True}),
|
||||
"temperature": ("FLOAT", {"default": 0.1, "min": 0, "max": 2}),
|
||||
"topP": ("FLOAT", {"default": 0.7, "min": 0, "max": 1}),
|
||||
"endpoint": ("STRING", {"default": "bowongai-dev--bowong-ai-video-gemini-fastapi-webapp.modal.run"}),
|
||||
},
|
||||
"optional": {
|
||||
"image": ("IMAGE",),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("IMAGE",)
|
||||
RETURN_NAMES = ("image",)
|
||||
FUNCTION = "process"
|
||||
OUTPUT_NODE = False
|
||||
CATEGORY = "不忘科技-自定义节点🚩/图片/Gemini图像编辑"
|
||||
CATEGORY = "不忘科技-自定义节点🚩/图片/Gemini"
|
||||
|
||||
def process(self, image: torch.Tensor, prompt: str, temperature: float, topP: float, endpoint: str):
|
||||
def process(self, prompt: str, temperature: float, topP: float, endpoint: str, **kwargs):
|
||||
try:
|
||||
timeout = 60
|
||||
logger.info("获取token")
|
||||
|
|
@ -155,6 +157,13 @@ class ModalEditCustom:
|
|||
headers={'Authorization': 'Bearer bowong7777'}, timeout=timeout).json()[
|
||||
"access_token"]
|
||||
format = "PNG"
|
||||
if "image" in kwargs and kwargs["image"] is not None:
|
||||
image = kwargs["image"]
|
||||
files = {"origin_image": (
|
||||
'image.' + format.lower(), tensor_to_image_bytes(image, format),
|
||||
f'image/{format.lower()}')}
|
||||
else:
|
||||
files = None
|
||||
logger.info("请求图像编辑")
|
||||
job_resp = send_request("post", f"https://{endpoint}/google/image/edit_custom",
|
||||
headers={'x-google-api-key': api_key},
|
||||
|
|
@ -163,9 +172,7 @@ class ModalEditCustom:
|
|||
"temperature": temperature,
|
||||
"topP": topP
|
||||
},
|
||||
files={"origin_image": (
|
||||
'image.' + format.lower(), tensor_to_image_bytes(image, format),
|
||||
f'image/{format.lower()}')},
|
||||
files=files,
|
||||
timeout=timeout)
|
||||
job_resp.raise_for_status()
|
||||
job_resp = job_resp.json()
|
||||
|
|
@ -202,10 +209,12 @@ class ModalMidJourneyGenerateImage:
|
|||
return {
|
||||
"required": {
|
||||
"prompt": ("STRING", {"default": "一幅宏大壮美的山川画卷", "multiline": True}),
|
||||
"image": ("IMAGE",),
|
||||
"endpoint": ("STRING", {"default": "bowongai-dev--text-video-agent-fastapi-app.modal.run"}),
|
||||
"timeout": ("INT", {"default": 120, "min": 10, "max": 600}),
|
||||
},
|
||||
"optional": {
|
||||
"image": ("IMAGE",),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("IMAGE",)
|
||||
|
|
@ -214,23 +223,28 @@ class ModalMidJourneyGenerateImage:
|
|||
OUTPUT_NODE = False
|
||||
CATEGORY = "不忘科技-自定义节点🚩/图片/Midjourney"
|
||||
|
||||
def process(self, prompt: str, image:torch.Tensor, endpoint: str, timeout: int):
|
||||
def process(self, prompt: str, endpoint: str, timeout: int, **kwargs):
|
||||
try:
|
||||
logger.info("请求异步接口")
|
||||
interval = 2
|
||||
format = "PNG"
|
||||
if "image" in kwargs and kwargs["image"] is not None:
|
||||
image = kwargs["image"]
|
||||
files = {"img_file": (
|
||||
'image.' + format.lower(), tensor_to_image_bytes(image, format),
|
||||
f'image/{format.lower()}')}
|
||||
else:
|
||||
files = None
|
||||
job_resp = send_request("post", f"https://{endpoint}/api/mj/async/generate/image?prompt={prompt}",
|
||||
headers={'Authorization': 'Bearer bowong7777'},
|
||||
files={"img_file": (
|
||||
'image.' + format.lower(), tensor_to_image_bytes(image, format),
|
||||
f'image/{format.lower()}')},
|
||||
files=files,
|
||||
timeout=150)
|
||||
job_resp.raise_for_status()
|
||||
job_resp = job_resp.json()
|
||||
if "失败" in job_resp["msg"] or "fail" in job_resp["msg"] or "error" in job_resp["msg"]:
|
||||
raise Exception("生成失败")
|
||||
job_id = job_resp["data"]
|
||||
for _ in range(0, timeout//interval, interval):
|
||||
for _ in range(0, timeout // interval, interval):
|
||||
logger.info("查询结果")
|
||||
resp = send_request("get", f"https://{endpoint}/api/mj/async/query/status?task_id={job_id}",
|
||||
headers={'Authorization': 'Bearer bowong7777'}, timeout=30)
|
||||
|
|
@ -242,7 +256,7 @@ class ModalMidJourneyGenerateImage:
|
|||
if isinstance(result_url, list):
|
||||
result_list = []
|
||||
for url in result_url:
|
||||
logger.success("img_url: "+url)
|
||||
logger.success("img_url: " + url)
|
||||
result_list.append(url_to_tensor(url).squeeze(0))
|
||||
result_list = torch.stack(result_list, dim=0)
|
||||
return (result_list,)
|
||||
|
|
@ -253,6 +267,7 @@ class ModalMidJourneyGenerateImage:
|
|||
except Exception as e:
|
||||
raise e
|
||||
|
||||
|
||||
class ModalMidJourneyDescribeImage:
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
|
|
|
|||
Loading…
Reference in New Issue