3.3 KiB
3.3 KiB
Documentation
- Class name: PromptImage
- Category: ♾️Mixlab/Prompt
- Output node: True
- Repo Ref: https://github.com/shadowcz007/comfyui-mixlab-nodes.git
PromptImage节点旨在根据文本提示处理和操作图像。它接收提示和图像作为输入,然后生成一系列受输入提示影响的图像输出。该节点具有将这些图像保存到指定目录的能力,为创意或分析目的提供了文本和图像处理之间的无缝集成。
Input types
Required
- prompts
- ‘prompts’参数是节点的重要输入,因为它提供了指导图像处理的文本内容。每个提示与一组图像相关联,并影响最终输出。
- Comfy dtype: STRING
- Python dtype: List[str]
- images
- ‘images’参数是包含要处理的图像数据的基本输入。预计它是一个图像张量列表,节点将根据提供的提示对其进行操作。
- Comfy dtype: IMAGE
- Python dtype: List[torch.Tensor]
- save_to_image
- ‘save_to_image’参数决定是否应将处理后的图像保存到输出目录。它允许用户根据需要启用或禁用保存功能。
- Comfy dtype: COMBO['enable', 'disable']
- Python dtype: List[str]
Output types
- ui
- 输出中的‘ui’参数包含显示处理后的图像及其相关提示的用户界面元素。它为进一步交互或分析提供了一种结构化的方式来展示结果。
- Comfy dtype: DICT
- Python dtype: Dict[str, Any]
Usage tips
- Infra type: CPU
Source code
class PromptImage:
def __init__(self):
self.output_dir = folder_paths.get_output_directory()
self.type = 'output'
self.prefix_append = 'PromptImage'
self.compress_level = 4
@classmethod
def INPUT_TYPES(s):
return {'required': {'prompts': ('STRING', {'multiline': True, 'default': '', 'dynamicPrompts': False}), 'images': ('IMAGE', {'default': None}), 'save_to_image': (['enable', 'disable'],)}}
RETURN_TYPES = ()
OUTPUT_NODE = True
INPUT_IS_LIST = True
FUNCTION = 'run'
CATEGORY = '♾️Mixlab/Prompt'
def run(self, prompts, images, save_to_image):
filename_prefix = 'mixlab_'
filename_prefix += self.prefix_append
(full_output_folder, filename, counter, subfolder, filename_prefix) = folder_paths.get_save_image_path(filename_prefix, self.output_dir, images[0].shape[1], images[0].shape[0])
results = list()
save_to_image = save_to_image[0] == 'enable'
for index in range(len(images)):
res = []
imgs = images[index]
for image in imgs:
img = tensor2pil(image)
metadata = None
if save_to_image:
metadata = PngInfo()
prompt_text = prompts[index]
if prompt_text is not None:
metadata.add_text('prompt_text', prompt_text)
file = f'{filename}_{index}_{counter:05}_.png'
img.save(os.path.join(full_output_folder, file), pnginfo=metadata, compress_level=self.compress_level)
res.append({'filename': file, 'subfolder': subfolder, 'type': self.type})
counter += 1
results.append(res)
return {'ui': {'_images': results, 'prompts': prompts}}