0.66
4
.gitignore
vendored
@@ -5,4 +5,6 @@ clear_vram.py
|
||||
web/js/clear_vram.js
|
||||
speakers
|
||||
*.text
|
||||
web/js/*.txt
|
||||
web/js/*.txt
|
||||
ScriptsPerso/
|
||||
civitai/NSFW_*
|
||||
149
API_civitai.py
@@ -14,7 +14,7 @@ import node_helpers
|
||||
import hashlib
|
||||
from folder_paths import get_filename_list, get_full_path, models_dir
|
||||
import nodes
|
||||
|
||||
|
||||
# Register the new checkpoint folder
|
||||
bjornulf_checkpoint_path = os.path.join(folder_paths.models_dir, "checkpoints", "Bjornulf_civitAI")
|
||||
os.makedirs(bjornulf_checkpoint_path, exist_ok=True)
|
||||
@@ -39,7 +39,9 @@ image_folders = {
|
||||
"lora_sdxl_1.0": os.path.join(civitai_base_path, "lora_sdxl_1.0"),
|
||||
"lora_sd_1.5": os.path.join(civitai_base_path, "lora_sd_1.5"),
|
||||
"lora_pony": os.path.join(civitai_base_path, "lora_pony"),
|
||||
"lora_flux.1_d": os.path.join(civitai_base_path, "lora_flux.1_d")
|
||||
"lora_flux.1_d": os.path.join(civitai_base_path, "lora_flux.1_d"),
|
||||
"lora_hunyuan_video": os.path.join(civitai_base_path, "lora_hunyuan_video"),
|
||||
"NSFW_lora_hunyuan_video": os.path.join(civitai_base_path, "NSFW_lora_hunyuan_video")
|
||||
}
|
||||
|
||||
# Add folder paths for each image folder
|
||||
@@ -1653,3 +1655,146 @@ class CivitAILoraSelectorPONY:
|
||||
m.update(f.read())
|
||||
m.update(image.encode('utf-8'))
|
||||
return m.digest().hex()
|
||||
|
||||
|
||||
|
||||
class CivitAILoraSelectorHunyuan:
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
image_extensions = ('.png', '.jpg', '.jpeg', '.gif', '.webp', '.bmp')
|
||||
|
||||
# Try NSFW folder first
|
||||
nsfw_files = [f"NSFW_lora_hunyuan_video/{f}" for f in folder_paths.get_filename_list("NSFW_lora_hunyuan_video")
|
||||
if f.lower().endswith(image_extensions)]
|
||||
|
||||
# If NSFW folder is empty or doesn't exist, try regular folder
|
||||
if not nsfw_files:
|
||||
files = [f"lora_hunyuan_video/{f}" for f in folder_paths.get_filename_list("lora_hunyuan_video")
|
||||
if f.lower().endswith(image_extensions)]
|
||||
else:
|
||||
files = nsfw_files
|
||||
|
||||
if not files:
|
||||
files = ["none"]
|
||||
|
||||
|
||||
return {
|
||||
"required": {
|
||||
"image": (sorted(files), {"image_upload": True}),
|
||||
"model": ("MODEL",),
|
||||
"clip": ("CLIP",),
|
||||
"strength_model": ("FLOAT", {"default": 1.0, "min": -20.0, "max": 20.0, "step": 0.01}),
|
||||
"strength_clip": ("FLOAT", {"default": 1.0, "min": -20.0, "max": 20.0, "step": 0.01}),
|
||||
"civitai_token": ("STRING", {"default": ""})
|
||||
},
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("MODEL", "CLIP", "STRING", "STRING", "STRING")
|
||||
RETURN_NAMES = ("model", "clip", "name", "civitai_url", "trigger_words")
|
||||
FUNCTION = "load_lora"
|
||||
CATEGORY = "Bjornulf"
|
||||
|
||||
def load_lora(self, image, model, clip, strength_model, strength_clip, civitai_token):
|
||||
def download_file(url, destination_path, lora_name, api_token=None):
|
||||
filename = f"{lora_name}.safetensors"
|
||||
file_path = os.path.join(destination_path, filename)
|
||||
|
||||
headers = {}
|
||||
if api_token:
|
||||
headers['Authorization'] = f'Bearer {api_token}'
|
||||
|
||||
try:
|
||||
print(f"Downloading from: {url}")
|
||||
response = requests.get(url, headers=headers, stream=True)
|
||||
response.raise_for_status()
|
||||
|
||||
file_size = int(response.headers.get('content-length', 0))
|
||||
block_size = 8192
|
||||
downloaded = 0
|
||||
|
||||
with open(file_path, 'wb') as f:
|
||||
for chunk in response.iter_content(chunk_size=block_size):
|
||||
if chunk:
|
||||
f.write(chunk)
|
||||
downloaded += len(chunk)
|
||||
|
||||
if file_size > 0:
|
||||
progress = int(50 * downloaded / file_size)
|
||||
bars = '=' * progress + '-' * (50 - progress)
|
||||
percent = (downloaded / file_size) * 100
|
||||
print(f'\rProgress: [{bars}] {percent:.1f}%', end='')
|
||||
|
||||
print(f"\nFile downloaded successfully to: {file_path}")
|
||||
return file_path
|
||||
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"Error downloading file: {e}")
|
||||
raise
|
||||
|
||||
if image == "none":
|
||||
raise ValueError("No image selected")
|
||||
|
||||
# Try loading NSFW JSON first, fall back to regular JSON if not found
|
||||
nsfw_json_path = os.path.join(parsed_models_path, 'NSFW_parsed_lora_hunyuan_video_loras.json')
|
||||
regular_json_path = os.path.join(parsed_models_path, 'parsed_lora_hunyuan_video_loras.json')
|
||||
|
||||
json_path = nsfw_json_path if os.path.exists(nsfw_json_path) else regular_json_path
|
||||
hunYuan = "hunyuan_video"
|
||||
|
||||
with open(json_path, 'r') as f:
|
||||
loras_info = json.load(f)
|
||||
|
||||
image_name = os.path.basename(image)
|
||||
lora_info = next((lora for lora in loras_info
|
||||
if os.path.basename(lora['image_path']) == image_name), None)
|
||||
|
||||
if not lora_info:
|
||||
raise ValueError(f"No LoRA information found for image: {image_name}")
|
||||
|
||||
lora_dir = os.path.join(folder_paths.models_dir, "loras", "Bjornulf_civitAI", hunYuan)
|
||||
os.makedirs(lora_dir, exist_ok=True)
|
||||
|
||||
lora_filename = f"{lora_info['name']}.safetensors"
|
||||
full_lora_path = os.path.join(lora_dir, lora_filename)
|
||||
|
||||
if not os.path.exists(full_lora_path):
|
||||
print(f"Downloading LoRA {lora_info['name']}...")
|
||||
|
||||
download_url = lora_info['download_url']
|
||||
if civitai_token:
|
||||
download_url += f"?token={civitai_token}" if '?' not in download_url else f"&token={civitai_token}"
|
||||
|
||||
try:
|
||||
download_file(download_url, lora_dir, lora_info['name'], civitai_token)
|
||||
except Exception as e:
|
||||
raise ValueError(f"Failed to download LoRA: {e}")
|
||||
|
||||
relative_lora_path = os.path.join("Bjornulf_civitAI", hunYuan, lora_filename)
|
||||
|
||||
try:
|
||||
lora_loader = nodes.LoraLoader()
|
||||
model_lora, clip_lora = lora_loader.load_lora(model=model,
|
||||
clip=clip,
|
||||
lora_name=relative_lora_path,
|
||||
strength_model=strength_model,
|
||||
strength_clip=strength_clip)
|
||||
except Exception as e:
|
||||
raise ValueError(f"Failed to load LoRA: {e}")
|
||||
|
||||
trained_words_str = ", ".join(lora_info.get('trained_words', []))
|
||||
|
||||
return (model_lora, clip_lora, lora_info['name'], f"https://civitai.com/models/{lora_info['lora_id']}", trained_words_str)
|
||||
|
||||
@classmethod
|
||||
def IS_CHANGED(s, image):
|
||||
if image == "none":
|
||||
return ""
|
||||
image_path = os.path.join(civitai_base_path, image)
|
||||
if not os.path.exists(image_path):
|
||||
return ""
|
||||
|
||||
m = hashlib.sha256()
|
||||
with open(image_path, 'rb') as f:
|
||||
m.update(f.read())
|
||||
m.update(image.encode('utf-8'))
|
||||
return m.digest().hex()
|
||||
45
README.md
@@ -1,6 +1,6 @@
|
||||
# 🔗 Comfyui : Bjornulf_custom_nodes v0.65 🔗
|
||||
# 🔗 Comfyui : Bjornulf_custom_nodes v0.66 🔗
|
||||
|
||||
A list of 116 custom nodes for Comfyui : Display, manipulate, create and edit text, images, videos, loras, generate characters and more.
|
||||
A list of 119 custom nodes for Comfyui : Display, manipulate, create and edit text, images, videos, loras, generate characters and more.
|
||||
You can manage looping operations, generate randomized content, trigger logical conditions, pause and manually control your workflows and even work with external AI tools, like Ollama or Text To Speech.
|
||||
|
||||
# Coffee : ☕☕☕☕☕ 5/5
|
||||
@@ -42,6 +42,7 @@ Support me and my work : ❤️❤️❤️ <https://ko-fi.com/bjornulf> ❤️
|
||||
`113.` [📝🔪 Text split in 5](#113----text-split-in-5)
|
||||
`115.` [📥 Load Text From Bjornulf Folder](115----load-text-from-bjornulf-folder)
|
||||
`116.` [📥 Load Text From Path](#116----load-text-from-path)
|
||||
`117.` [📝👈 Line selector (🎲 Or random)](#)
|
||||
|
||||
## 🔥 Text Generator 🔥
|
||||
`81.` [🔥📝 Text Generator 📝🔥](#81----text-generator-)
|
||||
@@ -97,6 +98,7 @@ Support me and my work : ❤️❤️❤️ <https://ko-fi.com/bjornulf> ❤️
|
||||
`41.` [🎲 Random Load checkpoint (Model Selector)](#41----random-load-checkpoint-model-selector)
|
||||
`48.` [🔀🎲 Text scrambler (🧑 Character)](#48----text-scrambler--character)
|
||||
`55.` [🎲👑 Random Lora Selector](#55----random-lora-selector)
|
||||
`117.` [📝👈 Line selector (🎲 Or random)](#)
|
||||
|
||||
## 🖼💾 Image Save 💾🖼
|
||||
`16.` [💾🖼💬 Save image for Bjornulf LobeChat](#16----save-image-for-bjornulf-lobechat-for-my-custom-lobe-chat)
|
||||
@@ -155,6 +157,7 @@ Support me and my work : ❤️❤️❤️ <https://ko-fi.com/bjornulf> ❤️
|
||||
`103.` [📥👑 Load Lora SD1.5 (+Download from CivitAi)](#103----load-lora-sd15-download-from-civitai)
|
||||
`104.` [📥👑 Load Lora SDXL (+Download from CivitAi)](#104----load-lora-sdxl-download-from-civitai)
|
||||
`105.` [📥👑 Load Lora Pony (+Download from CivitAi)](#105----load-lora-pony-download-from-civitai)
|
||||
`119.` [📥👑📹 Load Lora Hunyuan Video (+Download from CivitAi)](#)
|
||||
|
||||
## 📹 Video 📹
|
||||
`20.` [📹 Video Ping Pong](#20----video-ping-pong)
|
||||
@@ -171,21 +174,24 @@ Support me and my work : ❤️❤️❤️ <https://ko-fi.com/bjornulf> ❤️
|
||||
`77.` [📹🔍 Video details ⚙](#77----video-details-)
|
||||
`78.` [📹➜📹 Convert Video](#78----convert-video)
|
||||
`79.` [📹🔗 Concat Videos from list](#79----concat-videos-from-list)
|
||||
`119.` [📥👑📹 Load Lora Hunyuan Video (+Download from CivitAi)](#)
|
||||
|
||||
## 🤖 AI 🤖
|
||||
`19.` [🦙💬 Ollama Talk](#19----ollama-talk)
|
||||
`31.` [📝➜🔊 TTS - Text to Speech](#31----tts---text-to-speech-100-local-any-voice-you-want-any-language)
|
||||
`62.` [🦙👁 Ollama Vision](#62----ollama-vision)
|
||||
`63.` [🦙 Ollama Configuration ⚙](#63----ollama-configuration-)
|
||||
`64.` [🦙 Ollama Job Selector 💼](#64----ollama-job-selector-)
|
||||
`65.` [🦙 Ollama Persona Selector 🧑](#65----ollama-persona-selector-)
|
||||
`31.` [📝➜🔊 TTS - Text to Speech](#31----tts---text-to-speech-100-local-any-voice-you-want-any-language)
|
||||
`66.` [🔊➜📝 STT - Speech to Text](#66----stt---speech-to-text)
|
||||
`118.` [🔊 TTS Configuration ⚙](#118)
|
||||
|
||||
## 🔊 Audio 🔊
|
||||
`31.` [📝➜🔊 TTS - Text to Speech](#31----tts---text-to-speech-100-local-any-voice-you-want-any-language)
|
||||
`52.` [🔊📹 Audio Video Sync](#52----audio-video-sync)
|
||||
`59.` [📹🔊 Combine Video + Audio](#59----combine-video--audio)
|
||||
`66.` [🔊➜📝 STT - Speech to Text](#66----stt---speech-to-text)
|
||||
`118.` [🔊 TTS Configuration ⚙](#118)
|
||||
|
||||
## 💻 System 💻
|
||||
`34.` [🧹 Free VRAM hack](#34----free-vram-hack)
|
||||
@@ -353,6 +359,7 @@ cd /where/you/installed/ComfyUI && python main.py
|
||||
- **0.63**: delete long file, useless
|
||||
- **0.64**: remove "import wget", added some keywords to text generators.
|
||||
- **0.65**: ❗Breaking changes : Combine Text inputs are now all optional (PLease remake your nodes, sorry.) Add 6 new nodes : any2int, any2float, load text from folder, load text from path, load lora from path. Also upgraded the Save text node.
|
||||
- **0.66**: Add lora hunyuan CIVIT ai + download, add TTS configuration node, edit requirements.txt
|
||||
|
||||
# 📝 Nodes descriptions
|
||||
|
||||
@@ -1641,3 +1648,35 @@ Just give the path of the file, it will recover its content.
|
||||
If you want, with `Load Text From Path` you can also recover the elements in "Bjornulf/Text" by just adding it:
|
||||
|
||||

|
||||
|
||||
#### 117 - 📝👈 Line selector (🎲 Or random)
|
||||
|
||||
**Description:**
|
||||
|
||||
Select a line from input text. If set to 0 it will take a line at random.
|
||||
If line taken at random,. it will not take a line starting with the symbol `#`.
|
||||
So use that if you want to ignore a line.
|
||||
|
||||

|
||||
|
||||
#### 118 - 🔊 TTS Configuration ⚙
|
||||
|
||||
**Description:**
|
||||
|
||||
New optional configuration node to connect to TTS node, it can request a list of speakers for a given language and replace in the main TTS node :
|
||||
- The URL.
|
||||
- The language.
|
||||
- The speaker.
|
||||
Connect them only if you want to replace them with the one from the configuration node.
|
||||
|
||||

|
||||
|
||||
#### 119 - 📥👑 Load Lora Hunyuan Video (+Download from CivitAi)
|
||||
|
||||
**Description:**
|
||||
|
||||
Take a CivitAI Lora to use with Hunyuan. (NSFW list not on github of course.)
|
||||
|
||||
The workflow below is included : `workflows/HUNYUAN_basic_lora.json`) :
|
||||
|
||||

|
||||
15
__init__.py
@@ -37,7 +37,7 @@ from .random_seed_with_text import TextToStringAndSeed
|
||||
from .load_image_alpha import LoadImageWithTransparency
|
||||
from .image_mask_cutter import ImageMaskCutter
|
||||
from .character_description import CharacterDescriptionGenerator
|
||||
from .text_to_speech import TextToSpeech
|
||||
from .text_to_speech import TextToSpeech, XTTSConfig
|
||||
from .loop_combine_texts_by_lines import CombineTextsByLines
|
||||
from .free_vram_hack import FreeVRAM
|
||||
from .pause_resume_stop import PauseResume
|
||||
@@ -87,14 +87,18 @@ from .ffmpeg_convert import ConvertVideo
|
||||
from .text_generator import TextGenerator, TextGeneratorScene, TextGeneratorStyle, TextGeneratorCharacterFemale, TextGeneratorCharacterMale, TextGeneratorOutfitMale, TextGeneratorOutfitFemale, ListLooper, ListLooperScene, ListLooperStyle, ListLooperCharacter, ListLooperOutfitFemale, ListLooperOutfitMale, TextGeneratorCharacterPose, TextGeneratorCharacterObject, TextGeneratorCharacterCreature
|
||||
from .API_flux import APIGenerateFlux
|
||||
from .API_StableDiffusion import APIGenerateStability
|
||||
from .API_civitai import APIGenerateCivitAI, APIGenerateCivitAIAddLORA, CivitAIModelSelectorPony, CivitAIModelSelectorSD15, CivitAIModelSelectorSDXL, CivitAIModelSelectorFLUX_S, CivitAIModelSelectorFLUX_D, CivitAILoraSelectorSD15, CivitAILoraSelectorSDXL, CivitAILoraSelectorPONY
|
||||
from .API_civitai import APIGenerateCivitAI, APIGenerateCivitAIAddLORA, CivitAIModelSelectorPony, CivitAIModelSelectorSD15, CivitAIModelSelectorSDXL, CivitAIModelSelectorFLUX_S, CivitAIModelSelectorFLUX_D, CivitAILoraSelectorSD15, CivitAILoraSelectorSDXL, CivitAILoraSelectorPONY, CivitAILoraSelectorHunyuan
|
||||
from .API_falAI import APIGenerateFalAI
|
||||
from .latent_resolution_selector import LatentResolutionSelector
|
||||
from .loader_lora_with_path import LoaderLoraWithPath
|
||||
from .load_text import LoadTextFromFolder, LoadTextFromPath
|
||||
from .string_splitter import TextSplitin5
|
||||
|
||||
from .line_selector import LineSelector
|
||||
# from .text_generator_t2v import TextGeneratorText2Video
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"Bjornulf_LineSelector": LineSelector,
|
||||
"Bjornulf_XTTSConfig": XTTSConfig,
|
||||
# "Bjornulf_TextGeneratorText2Video": TextGeneratorText2Video,
|
||||
"Bjornulf_LatentResolutionSelector": LatentResolutionSelector,
|
||||
"Bjornulf_LoaderLoraWithPath": LoaderLoraWithPath,
|
||||
"Bjornulf_LoadTextFromPath": LoadTextFromPath,
|
||||
@@ -112,6 +116,7 @@ NODE_CLASS_MAPPINGS = {
|
||||
"Bjornulf_CivitAILoraSelectorSD15": CivitAILoraSelectorSD15,
|
||||
"Bjornulf_CivitAILoraSelectorSDXL": CivitAILoraSelectorSDXL,
|
||||
"Bjornulf_CivitAILoraSelectorPONY": CivitAILoraSelectorPONY,
|
||||
"Bjornulf_CivitAILoraSelectorHunyuan": CivitAILoraSelectorHunyuan,
|
||||
# "Bjornulf_CivitAILoraSelector": CivitAILoraSelector,
|
||||
"Bjornulf_APIGenerateCivitAIAddLORA": APIGenerateCivitAIAddLORA,
|
||||
"Bjornulf_TextGenerator": TextGenerator,
|
||||
@@ -222,7 +227,9 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
# "Bjornulf_ImageBlend": "🎨 Image Blend",
|
||||
# "Bjornulf_APIHiResCivitAI": "🎨➜🎨 API Image hires fix (CivitAI)",
|
||||
# "Bjornulf_CivitAILoraSelector": "lora Civit",
|
||||
"Bjornulf_LineSelector": "📝👈 Line selector (🎲 Or random)",
|
||||
"Bjornulf_LoaderLoraWithPath": "📥👑 Load Lora with Path",
|
||||
# "Bjornulf_TextGeneratorText2Video": "🔥📝📹 Text Generator for text to video 📹📝🔥",
|
||||
"Bjornulf_TextSplitin5": "📝🔪 Text split in 5",
|
||||
"Bjornulf_LatentResolutionSelector": "🩷 Empty Latent Selector",
|
||||
"Bjornulf_CivitAIModelSelectorSD15": "📥 Load checkpoint SD1.5 (+Download from CivitAi)",
|
||||
@@ -233,6 +240,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"Bjornulf_CivitAILoraSelectorSD15": "📥👑 Load Lora SD1.5 (+Download from CivitAi)",
|
||||
"Bjornulf_CivitAILoraSelectorSDXL": "📥👑 Load Lora SDXL (+Download from CivitAi)",
|
||||
"Bjornulf_CivitAILoraSelectorPONY": "📥👑 Load Lora Pony (+Download from CivitAi)",
|
||||
"Bjornulf_CivitAILoraSelectorHunyuan": "📥👑📹 Load Lora Hunyuan Video (+Download from CivitAi)",
|
||||
"Bjornulf_APIGenerateFalAI": "☁🎨 API Image Generator (FalAI) 🎨☁",
|
||||
"Bjornulf_APIGenerateCivitAI": "☁🎨 API Image Generator (CivitAI) 🎨☁",
|
||||
"Bjornulf_APIGenerateCivitAIAddLORA": "☁👑 Add Lora (API ONLY - CivitAI) 👑☁",
|
||||
@@ -262,6 +270,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"Bjornulf_OllamaTalk": "🦙💬 Ollama Talk",
|
||||
"Bjornulf_OllamaImageVision": "🦙👁 Ollama Vision",
|
||||
"Bjornulf_OllamaConfig": "🦙 Ollama Configuration ⚙",
|
||||
"Bjornulf_XTTSConfig": "🔊 TTS Configuration ⚙",
|
||||
"Bjornulf_OllamaSystemJobSelector": "🦙 Ollama Job Selector 👇",
|
||||
"Bjornulf_OllamaSystemPersonaSelector": "🦙 Ollama Persona Selector 👇",
|
||||
"Bjornulf_SpeechToText": "🔊➜📝 STT - Speech to Text",
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 4.6 MiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 491 KiB After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 7.7 MiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 849 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 457 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 2.3 MiB After Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 424 KiB After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 21 KiB |
BIN
civitai/lora_hunyuan_video/Anna_Hunyuan_Lora_51250388.jpeg
Normal file
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 18 KiB |
BIN
civitai/lora_hunyuan_video/Black_Latex_-_HunYuan_47818801.jpeg
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 19 KiB |
BIN
civitai/lora_hunyuan_video/Dua_Lipa_Hunyuan_Video_48740585.jpeg
Normal file
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 23 KiB |