Added mapping for images and automatically adding them to database

This commit is contained in:
ManInDark 2023-08-04 23:16:43 +02:00
parent ef7d7f4ff1
commit 7a3314a927
No known key found for this signature in database
GPG Key ID: 72EC12A5B2D62779
2 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,30 @@
from sqlalchemy import Column, Integer, String, Float, Boolean
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Image(Base):
__tablename__ = 'images'
path = Column(String, primary_key=True)
seed = Column(Integer)
use_stable_diffusion_model = Column(String)
clip_skip = Column(Boolean)
use_vae_model = Column(String)
sampler_name = Column(String)
width = Column(Integer)
height = Column(Integer)
num_inference_steps = Column(Integer)
guidance_scale = Column(Float)
lora = Column(String)
use_hypernetwork_model = Column(String)
tiling = Column(String)
use_face_correction = Column(String)
use_upscale = Column(String)
def __repr__(self):
return "<Image(path='%s', seed='%s', use_stable_diffusion_model='%s', clip_skip='%s', use_vae_model='%s', sampler_name='%s', width='%s', height='%s', num_inference_steps='%s', guidance_scale='%s', lora='%s', use_hypernetwork_model='%s', tiling='%s', use_face_correction='%s', use_upscale='%s')>" % (
self.path, self.seed, self.use_stable_diffusion_model, self.clip_skip, self.use_vae_model, self.sampler_name, self.width, self.height, self.num_inference_steps, self.guidance_scale, self.lora, self.use_hypernetwork_model, self.tiling, self.use_face_correction, self.use_upscale)
from easydiffusion.easydb.database import engine
Image.metadata.create_all(engine)

View File

@ -140,6 +140,48 @@ def save_images_to_disk(
output_quality=output_format.output_quality,
output_lossless=output_format.output_lossless,
)
for i in range(len(filtered_images)):
path_i = f"{os.path.join(save_dir_path, make_filename(i))}.{output_format.output_format.lower()}"
def createLoraString(metadata_entries, i):
if metadata_entries[i]["use_lora_model"] is None:
return "None"
elif isinstance(metadata_entries[i]["use_lora_model"], list):
loraString = ""
for j in range(len(metadata_entries[i]["use_lora_model"])):
loraString += metadata_entries[i]["use_lora_model"][j] + ":" + str(metadata_entries[i]["lora_alpha"][j]) + " "
return loraString.trim()
else:
return metadata_entries[i]["use_lora_model"] + ":" + str(metadata_entries[i]["lora_alpha"])
from easydiffusion.easydb.mappings import Image
from easydiffusion.easydb.database import SessionLocal
session = SessionLocal()
img = Image(
path = path_i,
seed = metadata_entries[i]["seed"],
use_stable_diffusion_model = metadata_entries[i]["use_stable_diffusion_model"],
clip_skip = metadata_entries[i]["clip_skip"],
use_vae_model = metadata_entries[i]["use_vae_model"],
sampler_name = metadata_entries[i]["sampler_name"],
width = metadata_entries[i]["width"],
height = metadata_entries[i]["height"],
num_inference_steps = metadata_entries[i]["num_inference_steps"],
guidance_scale = metadata_entries[i]["guidance_scale"],
lora = createLoraString(metadata_entries, i),
use_hypernetwork_model = metadata_entries[i]["use_hypernetwork_model"],
tiling = metadata_entries[i]["tiling"],
use_face_correction = metadata_entries[i]["use_face_correction"],
use_upscale = metadata_entries[i]["use_upscale"]
)
session.add(img)
session.commit()
session.close()
if task_data.metadata_output_format:
for metadata_output_format in task_data.metadata_output_format.split(","):
if metadata_output_format.lower() in ["json", "txt", "embed"]: