Sketcher / utils /utils.py
Gainward777's picture
Update utils/utils.py
7e5bed5 verified
raw
history blame
2.28 kB
from PIL import Image
import numpy as np
import cv2
#first stage sketch preprocess
def conventional_resize(img):
original_width, original_height = img.size
aspect_ratio = original_width / original_height
conventional_sizes = {
1: (1024, 1024),
4/3: (1152, 896),
3/2: (1216, 832),
16/9: (1344, 768),
21/9: (1568, 672),
3/1: (1728, 576),
1/4: (512, 2048),
1/3: (576, 1728),
9/16: (768, 1344),
2/3: (832, 1216),
3/4: (896, 1152)
}
closest_aspect_ratio = min(conventional_sizes.keys(), key=lambda x: abs(x - aspect_ratio)) #1.333333333 #
new_width, new_height = conventional_sizes[closest_aspect_ratio]
resized_img = img.resize((new_width, new_height), Image.LANCZOS)
return resized_img
def get_substrate(img, color=(255, 255, 255, 255)):
size=img.size
substrate = Image.new("RGBA", size, color)
return substrate.convert("RGB")
def sketch_process(img):
substrate=conventional_resize(get_substrate(img))
resized_img = conventional_resize(img)
return substrate, resized_img
#first stage prompt preprocess
def remove_duplicates(base_prompt):
prompt_list = base_prompt.split(", ")
seen = set()
unique_tags = []
for tag in prompt_list :
tag_clean = tag.lower().strip()
if tag_clean not in seen and tag_clean != "":
unique_tags.append(tag)
seen.add(tag_clean)
return ", ".join(unique_tags)
def remove_color(base_prompt):
prompt_list = base_prompt.split(", ")
color_list = ["pink", "red", "orange", "brown", "yellow", "green", "blue", "purple", "blonde", "colored skin", "white hair"]
cleaned_tags = [tag for tag in prompt_list if all(color.lower() not in tag.lower() for color in color_list)]
return ", ".join(cleaned_tags)
def execute_prompt(base_prompt):
prompt_list = base_prompt.split(", ")
execute_tags = ["sketch", "transparent background"]
filtered_tags = [tag for tag in prompt_list if tag not in execute_tags]
return ", ".join(filtered_tags)
def prompt_preprocess(prompt):
result=execute_prompt(prompt)
result=remove_duplicates(result)
result=remove_color(result)
return result