| | import hashlib |
| | import torch |
| |
|
| | from comfy.cli_args import args |
| |
|
| | from PIL import ImageFile, UnidentifiedImageError |
| |
|
| | def conditioning_set_values(conditioning, values={}, append=False): |
| | c = [] |
| | for t in conditioning: |
| | n = [t[0], t[1].copy()] |
| | for k in values: |
| | val = values[k] |
| | if append: |
| | old_val = n[1].get(k, None) |
| | if old_val is not None: |
| | val = old_val + val |
| |
|
| | n[1][k] = val |
| | c.append(n) |
| |
|
| | return c |
| |
|
| | def pillow(fn, arg): |
| | prev_value = None |
| | try: |
| | x = fn(arg) |
| | except (OSError, UnidentifiedImageError, ValueError): |
| | prev_value = ImageFile.LOAD_TRUNCATED_IMAGES |
| | ImageFile.LOAD_TRUNCATED_IMAGES = True |
| | x = fn(arg) |
| | finally: |
| | if prev_value is not None: |
| | ImageFile.LOAD_TRUNCATED_IMAGES = prev_value |
| | return x |
| |
|
| | def hasher(): |
| | hashfuncs = { |
| | "md5": hashlib.md5, |
| | "sha1": hashlib.sha1, |
| | "sha256": hashlib.sha256, |
| | "sha512": hashlib.sha512 |
| | } |
| | return hashfuncs[args.default_hashing_function] |
| |
|
| | def string_to_torch_dtype(string): |
| | if string == "fp32": |
| | return torch.float32 |
| | if string == "fp16": |
| | return torch.float16 |
| | if string == "bf16": |
| | return torch.bfloat16 |
| |
|
| | def image_alpha_fix(destination, source): |
| | if destination.shape[-1] < source.shape[-1]: |
| | source = source[...,:destination.shape[-1]] |
| | elif destination.shape[-1] > source.shape[-1]: |
| | destination = torch.nn.functional.pad(destination, (0, 1)) |
| | destination[..., -1] = 1.0 |
| | return destination, source |
| |
|