更新节点

This commit is contained in:
pandy
2026-03-20 00:25:25 +08:00
parent ab1b1cae22
commit e30f375355
6 changed files with 646 additions and 16 deletions
+16 -6
View File
@@ -88,9 +88,10 @@ class PDGeminiImageGenAPIKey:
}),
},
"optional": {
"image_ref": ("IMAGE", {
"images": ("IMAGE", {
"tooltip": "Reference image(s) for image-to-image generation"
}),
"files": ("GEMINI_INPUT_FILES", ),
"system_prompt": ("STRING", {
"multiline": True,
"default": GEMINI_IMAGE_SYS_PROMPT,
@@ -107,7 +108,7 @@ class PDGeminiImageGenAPIKey:
FUNCTION = "generate_image"
CATEGORY = "PD_Tools/Image_Generation"
def generate_image(self, api_key, prompt, model, aspect_ratio, response_modalities, seed, unique_id, image_ref=None, system_prompt=""):
def generate_image(self, api_key, prompt, model, aspect_ratio, response_modalities, seed, unique_id, images=None, files=None, system_prompt=""):
"""生成图片"""
# 验证 API Key
@@ -129,9 +130,9 @@ class PDGeminiImageGenAPIKey:
parts.append({"text": prompt})
# 添加参考图片(如果有)
if image_ref is not None:
for i in range(image_ref.shape[0]):
b64_str = tensor_to_base64(image_ref[i])
if images is not None:
for i in range(images.shape[0]):
b64_str = tensor_to_base64(images[i])
parts.append({
"inlineData": {
"mimeType": "image/png",
@@ -140,6 +141,15 @@ class PDGeminiImageGenAPIKey:
})
print(f"[GEMINI_APIKEY] Added reference image {i+1}")
# Files 输入处理
if files:
for file_part in files:
if hasattr(file_part, "model_dump"):
parts.append(file_part.model_dump(exclude_none=True))
else:
parts.append(file_part)
print(f"[GEMINI_APIKEY] Added file part")
# 生成配置
generation_config = {
"responseModalities": ["IMAGE"] if response_modalities == "IMAGE" else ["TEXT", "IMAGE"]
@@ -280,5 +290,5 @@ NODE_CLASS_MAPPINGS = {
}
NODE_DISPLAY_NAME_MAPPINGS = {
"PDGeminiImageGenAPIKey": "PD: Gemini Image (apikey)"
"PDGeminiImageGenAPIKey": "PD: Gemini Image (ComfyUI Key)"
}
+16 -6
View File
@@ -87,9 +87,10 @@ class PDGeminiImageGenAuthToken:
}),
},
"optional": {
"image_ref": ("IMAGE", {
"images": ("IMAGE", {
"tooltip": "Reference image(s) for image-to-image generation"
}),
"files": ("GEMINI_INPUT_FILES", ),
"system_prompt": ("STRING", {
"multiline": True,
"default": GEMINI_IMAGE_SYS_PROMPT,
@@ -106,7 +107,7 @@ class PDGeminiImageGenAuthToken:
FUNCTION = "generate_image"
CATEGORY = "PD_Tools/Image_Generation"
def generate_image(self, auth_token, prompt, model, aspect_ratio, resolution, seed, unique_id, image_ref=None, system_prompt=""):
def generate_image(self, auth_token, prompt, model, aspect_ratio, resolution, seed, unique_id, images=None, files=None, system_prompt=""):
"""生成图片"""
print(f"[GEMINI_AUTHTOKEN] ========== 开始执行 ==========")
@@ -138,9 +139,9 @@ class PDGeminiImageGenAuthToken:
parts.append({"text": prompt})
# 添加参考图片(如果有)
if image_ref is not None:
for i in range(image_ref.shape[0]):
b64_str = tensor_to_base64(image_ref[i])
if images is not None:
for i in range(images.shape[0]):
b64_str = tensor_to_base64(images[i])
parts.append({
"inlineData": {
"mimeType": "image/png",
@@ -149,6 +150,15 @@ class PDGeminiImageGenAuthToken:
})
print(f"[GEMINI_AUTHTOKEN] Added reference image {i+1}")
# Files 输入处理
if files:
for file_part in files:
if hasattr(file_part, "model_dump"):
parts.append(file_part.model_dump(exclude_none=True))
else:
parts.append(file_part)
print(f"[GEMINI_AUTHTOKEN] Added file part")
# 生成配置
generation_config = {
"responseModalities": ["IMAGE"]
@@ -277,5 +287,5 @@ NODE_CLASS_MAPPINGS = {
}
NODE_DISPLAY_NAME_MAPPINGS = {
"PDGeminiImageGenAuthToken": "PD: Gemini Image (comfyui_AuthToken)"
"PDGeminiImageGenAuthToken": "PD: Gemini Image (ComfyUI AuthToken)"
}
+12 -2
View File
@@ -93,6 +93,7 @@ class PDGeminiProImageGenAPIKey:
"images": ("IMAGE", {
"tooltip": "Optional reference image(s) (up to 14)"
}),
"files": ("GEMINI_INPUT_FILES", ),
"system_prompt": ("STRING", {
"multiline": True,
"default": GEMINI_IMAGE_SYS_PROMPT,
@@ -109,7 +110,7 @@ class PDGeminiProImageGenAPIKey:
FUNCTION = "generate_image"
CATEGORY = "PD_Tools/Image_Generation"
def generate_image(self, api_key, prompt, model, aspect_ratio, resolution, response_modalities, seed, unique_id, images=None, system_prompt=""):
def generate_image(self, api_key, prompt, model, aspect_ratio, resolution, response_modalities, seed, unique_id, images=None, files=None, system_prompt=""):
"""生成图片"""
# 验证 API Key
@@ -146,6 +147,15 @@ class PDGeminiProImageGenAPIKey:
if images.shape[0] > 14:
print(f"[GEMINI_PRO_APIKEY] Warning: Only first 14 images will be used (provided {images.shape[0]})")
# Files 输入处理
if files:
for file_part in files:
if hasattr(file_part, "model_dump"):
parts.append(file_part.model_dump(exclude_none=True))
else:
parts.append(file_part)
print(f"[GEMINI_PRO_APIKEY] Added file part")
# 生成配置
generation_config = {
"responseModalities": ["IMAGE"] if response_modalities == "IMAGE" else ["TEXT", "IMAGE"]
@@ -290,5 +300,5 @@ NODE_CLASS_MAPPINGS = {
}
NODE_DISPLAY_NAME_MAPPINGS = {
"PDGeminiProImageGenAPIKey": "PD: Gemini Pro Image (apikey)"
"PDGeminiProImageGenAPIKey": "PD: Gemini Pro Image (ComfyUI Key)"
}
+12 -2
View File
@@ -93,6 +93,7 @@ class PDGeminiProImageGenAuthToken:
"images": ("IMAGE", {
"tooltip": "Optional reference image(s) (up to 14)"
}),
"files": ("GEMINI_INPUT_FILES", ),
"system_prompt": ("STRING", {
"multiline": True,
"default": GEMINI_IMAGE_SYS_PROMPT,
@@ -109,7 +110,7 @@ class PDGeminiProImageGenAuthToken:
FUNCTION = "generate_image"
CATEGORY = "PD_Tools/Image_Generation"
def generate_image(self, auth_token, prompt, model, aspect_ratio, resolution, response_modalities, seed, unique_id, images=None, system_prompt=""):
def generate_image(self, auth_token, prompt, model, aspect_ratio, resolution, response_modalities, seed, unique_id, images=None, files=None, system_prompt=""):
"""生成图片"""
print(f"[GEMINI_PRO_AUTHTOKEN] ========== 开始执行 ==========")
@@ -152,6 +153,15 @@ class PDGeminiProImageGenAuthToken:
if images.shape[0] > 14:
print(f"[GEMINI_PRO_AUTHTOKEN] Warning: Only first 14 images will be used (provided {images.shape[0]})")
# Files 输入处理
if files:
for file_part in files:
if hasattr(file_part, "model_dump"):
parts.append(file_part.model_dump(exclude_none=True))
else:
parts.append(file_part)
print(f"[GEMINI_PRO_AUTHTOKEN] Added file part")
# 生成配置
generation_config = {
"responseModalities": ["IMAGE"] if response_modalities == "IMAGE" else ["TEXT", "IMAGE"]
@@ -296,5 +306,5 @@ NODE_CLASS_MAPPINGS = {
}
NODE_DISPLAY_NAME_MAPPINGS = {
"PDGeminiProImageGenAuthToken": "PD: Gemini Pro Image (comfyui_AuthToken)"
"PDGeminiProImageGenAuthToken": "PD: Gemini Pro Image (ComfyUI AuthToken)"
}