support kijai's cogVideo textencode

This commit is contained in:
Beamhi
2024-08-27 16:15:09 -07:00
parent 08dd49e5cc
commit 90f61354ab
2 changed files with 24 additions and 17 deletions
+19 -13
View File
@@ -329,13 +329,18 @@ class ConditioningFromBase64:
cond_data = torch.from_numpy(cond_data_np)
cond_meta = {k: torch.from_numpy(v) if isinstance(v, np.ndarray) else v for k, v in cond_meta_serializable.items()}
# Reconstruct the conditioning object
conditioning = [[cond_data, cond_meta]]
# Check if we're dealing with the original format or the new embeds format
if cond_meta:
# Original format: [[cond, output]]
conditioning = [[cond_data, cond_meta]]
else:
# New format: embeds
conditioning = cond_data
return (conditioning,)
except Exception as e:
raise ValueError(f"Failed to load conditioning from base64: {str(e)}")
print(f"Error in convert function: {str(e)}")
return None
def align_text(align, img_height, text_height, text_pos_y, margins):
if align == "center":
@@ -461,19 +466,20 @@ class SaveImageWithBase64:
OUTPUT_NODE = True
CATEGORY = "image"
TITLE = "save conds and latents"
def save_images(self, images, filename_prefix="ComfyUI", workflowName="", latent=None, positive_conditioning=None, negative_conditioning=None, prompt=None, extra_pnginfo=None):
def convertconditioning(conditioning):
cond_data, cond_meta = conditioning[0]
# Convert tensors to numpy arrays
if isinstance(conditioning, list) and len(conditioning) > 0 and isinstance(conditioning[0], list):
# Conditioning is a tuple (cond_data, cond_meta)
cond_data, cond_meta = conditioning[0]
else:
# Conditioning is a single tensor
cond_data = conditioning
cond_meta = {}
cond_data_np = cond_data.cpu().numpy()
cond_meta_serializable = {k: v.cpu().numpy() if isinstance(v, torch.Tensor) else v for k, v in cond_meta.items()}
# Combine data and metadata into a single dictionary
combined_data = {
"cond_data": cond_data_np,
"cond_meta": cond_meta_serializable
}
combined_data = {"cond_data": cond_data_np, "cond_meta": cond_meta_serializable }
# Save the combined data to a bytes buffer
buffer = io.BytesIO()
np.savez_compressed(buffer, **combined_data)
@@ -534,7 +540,7 @@ class SaveImageWithBase64:
metadata.add_text("conditioning_base64", p_conditioning_base64)
if negative_conditioning is not None:
n_conditioning_base64 = convertconditioning(negative_conditioning)
metadata.add_text("conditioning_base64", n_conditioning_base64)
metadata.add_text("neg_conditioning_base64", n_conditioning_base64)
filename_with_batch_num = filename.replace("%batch_num%", str(batch_number))
file = f"{filename_with_batch_num}_{counter:05}_.png"
img.save(os.path.join(full_output_folder, file), pnginfo=metadata, compress_level=self.compress_level)
+5 -4
View File
@@ -53,8 +53,8 @@ class FetchRemoteWithExtras():
},
}
RETURN_TYPES = ("IMAGE", "STRING", "STRING")
RETURN_NAMES = ("IMAGE", "latent_base64", "conditioning_base64")
RETURN_TYPES = ("IMAGE", "STRING", "STRING", "STRING")
RETURN_NAMES = ("IMAGE", "latent_base64", "P_conditioning_base64", "N_conditioning_base64")
FUNCTION = "fetch"
CATEGORY = "remote"
TITLE = "Fetch from remote"
@@ -68,9 +68,10 @@ class FetchRemoteWithExtras():
out = final_image[:1] * 0.0 # black image
latent = metadata.get("latent_base64", None)
conditioning = metadata.get("conditioning_base64", None)
p_conditioning = metadata.get("conditioning_base64", None)
n_conditioning = metadata.get("neg_conditioning_base64", None)
return (out, latent, conditioning)
return (out, latent, p_conditioning, n_conditioning)
import ast