Files
CavinHuang-comfyui-nodes-docs/docs/Image History Loader.md
2024-05-26 20:35:16 +08:00

2.8 KiB

Documentation

WAS_Image_History 节点旨在管理和检索存储在 WASDatabase 中的历史图像。它提供访问和显示历史记录中的图像的功能,确保用户可以查看过去的图像状态或数据。

Input types

Required

  • image
    • 'image' 参数对于指定用户想要访问的历史图像至关重要。节点使用它来定位并从数据库中检索正确的图像。
    • Comfy dtype: str
    • Python dtype: str

Output types

  • image
    • 'image' 输出参数表示以张量形式检索到的历史图像,适用于进一步处理或显示目的。
    • Comfy dtype: COMBO[str, torch.Tensor]
    • Python dtype: Union[str, torch.Tensor]
  • filename_text
    • 'filename_text' 输出参数提供检索到的图像的文件名,这对于记录、引用或额外的元数据目的非常有用。
    • Comfy dtype: str
    • Python dtype: str

Usage tips

  • Infra type: CPU

Source code

class WAS_Image_History:

    def __init__(self):
        self.HDB = WASDatabase(WAS_HISTORY_DATABASE)
        self.conf = getSuiteConfig()

    @classmethod
    def INPUT_TYPES(cls):
        HDB = WASDatabase(WAS_HISTORY_DATABASE)
        conf = getSuiteConfig()
        paths = ['No History']
        if HDB.catExists('History') and HDB.keyExists('History', 'Images'):
            history_paths = HDB.get('History', 'Images')
            if conf.__contains__('history_display_limit'):
                history_paths = history_paths[-conf['history_display_limit']:]
                paths = []
            for path_ in history_paths:
                paths.append(os.path.join('...' + os.sep + os.path.basename(os.path.dirname(path_)), os.path.basename(path_)))
        return {'required': {'image': (paths,)}}
    RETURN_TYPES = ('IMAGE', TEXT_TYPE)
    RETURN_NAMES = ('image', 'filename_text')
    FUNCTION = 'image_history'
    CATEGORY = 'WAS Suite/History'

    def image_history(self, image):
        self.HDB = WASDatabase(WAS_HISTORY_DATABASE)
        paths = {}
        if self.HDB.catExists('History') and self.HDB.keyExists('History', 'Images'):
            history_paths = self.HDB.get('History', 'Images')
            for path_ in history_paths:
                paths.update({os.path.join('...' + os.sep + os.path.basename(os.path.dirname(path_)), os.path.basename(path_)): path_})
        if os.path.exists(paths[image]) and paths.__contains__(image):
            return (pil2tensor(Image.open(paths[image]).convert('RGB')), os.path.basename(paths[image]))
        else:
            cstr(f'The image `{image}` does not exist!').error.print()
            return (pil2tensor(Image.new('RGB', (512, 512), (0, 0, 0, 0))), 'null')

    @classmethod
    def IS_CHANGED(cls, **kwargs):
        return float('NaN')