Spaces:
Sleeping
Sleeping
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 | |