Spaces:
Running
Running
import pickle | |
import gradio as gr | |
import random | |
import shutil | |
from PIL.ImageOps import expand | |
import re | |
import fn | |
import edimg | |
import os | |
from PIL import Image, ImageDraw, ImageFont, ImageColor, ImageFilter, ImageSequence, PngImagePlugin | |
import pandas as pd | |
import pre | |
def change_img_type(a): | |
if a == "Image": | |
return gr.File(visible=True), gr.Image(visible=False), gr.Image(visible=False) | |
else: | |
return gr.File(visible=False), gr.Image(visible=True), gr.Image(visible=True) | |
def gif2cache(a): | |
krtime = fn.get_kr_time() | |
shutil.copy2(a, f'/data/cache/original_{krtime}.gif') | |
return a | |
def gif_clear(): | |
return | |
def img2cache_resize(a, dummy): | |
a = Image.open(a).convert('RGB') | |
x, y = a.size | |
krtime = fn.get_kr_time() | |
a.save(f'/data/cache/original_{krtime}.jpg', quality=90) | |
if x <= y: | |
a = edimg.resize_img(a, 1164, 1800) | |
return a, dummy | |
else: | |
return a, not dummy | |
def rotate(a): | |
if a == None: | |
return None | |
a = Image.open(a) | |
a = a.rotate(270, expand=True) | |
print('rotated') | |
a = edimg.resize_img(a, 1164, 1800) | |
return a | |
def obj_color_update(obj_color): | |
if obj_color == "Other color": | |
return gr.ColorPicker(visible=True), gr.ColorPicker(visible=True), gr.Slider(1, 1000, 0, visible=False), gr.Button(visible=False) | |
elif obj_color == "AI Color": | |
ran = random.randrange(1, 1000) | |
return gr.ColorPicker(visible=False), gr.ColorPicker(visible=False), gr.Slider(1, 1000, ran, visible=True), gr.Button(visible=True) | |
else: | |
return gr.ColorPicker(visible=False), gr.ColorPicker(visible=False), gr.Slider(1, 1000, 0, visible=False), gr.Button(visible=False) | |
def txt_color_update(txt_color_picker): | |
if txt_color_picker == "Other": | |
return gr.Image(visible=True), gr.Image(visible=True) | |
else: | |
return gr.Image(visible=False), gr.Image(visible=False) | |
def txt_color_hex_update(txt): | |
try: | |
hex_digits = match_hex(txt) | |
print("μ¬λ°λ₯Έ 16μ§μ λ¬Έμμ΄μ λλ€.") | |
return hex_digits, hex_digits | |
except ValueError: | |
print("16μ§μ λ¬Έμμ΄μ΄ μλλλ€.") | |
return "#ffffff", "#ffffff" | |
def match_hex(hex_str): | |
# μ κ·ννμ: #μ΄ μ νμ μΌλ‘ μκ³ , 3μ리 λλ 6μ리μ 16μ§μ | |
pattern = r'^#?([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})$' | |
match = re.match(pattern, hex_str) | |
if not match: | |
raise ValueError("μ ν¨νμ§ μμ hex νμμ λλ€.") | |
hex_digits = match.group(1) | |
# 3μ리 hexμΈ κ²½μ° κ° λ¬Έμλ₯Ό λλ²μ© λ°λ³΅νμ¬ 6μλ¦¬λ‘ νμ₯ | |
if len(hex_digits) == 3: | |
hex_digits = ''.join([ch * 2 for ch in hex_digits]) | |
return "#"+hex_digits | |
def group_member_name_update(a, artist_name, displayed_name): | |
if a == "Other": | |
return gr.Textbox(visible=True), gr.Dropdown([], label="Member Name", allow_custom_value=True) | |
elif a == "tripleS": | |
return gr.Textbox(visible=False), gr.Dropdown( | |
["SeoYeon", "HyeRin", "JiWoo", "ChaeYeon", "YooYeon", "SooMin", "NaKyoung", "YuBin", "Kaede", "DaHyun", | |
"Kotone", "YeonJi", "Nien", "SoHyun", "Xinyu", "Mayu", "Lynn", "JooBin", "HaYeon", "ShiOn", "ChaeWon", "Sullin", "SeoAh", "JiYeon"], label="Member Name", | |
allow_custom_value=True) | |
elif a == "ARTMS": | |
return gr.Textbox(visible=False), gr.Dropdown(["HeeJin", "JinSoul", "Kim Lip", "Choerry", "HaSeul"], | |
label="Member Name", allow_custom_value=True) | |
else: | |
path = '/data/presets/' | |
data = pd.read_pickle(path+displayed_name+'/data.pkl') | |
group_name = data['group'] | |
artist_name = data['artist'] | |
member_name_dropdown = gr.Dropdown(choices=artist_name, label="Member Name", allow_custom_value=True, | |
value=artist_name[0]) | |
return gr.Textbox(visible=False), member_name_dropdown | |
def alphabet_txt_update(a): | |
if a == "Other": | |
return gr.Textbox(visible=True) | |
else: | |
return gr.Textbox(visible=False) | |
def serial_random(): | |
random_number = random.randint(0, 99999) | |
formatted_number = f"{random_number:05}" | |
return gr.Textbox(value=formatted_number) | |
def frame_color_update(a): | |
if a == "Other": | |
return gr.ColorPicker(visible=True), gr.ColorPicker(visible=True) | |
else: | |
return gr.ColorPicker(visible=False), gr.ColorPicker(visible=True) | |
def ex_gen_count(a): | |
if a == "Two Files": | |
return gr.Image(visible=True) | |
else: | |
return gr.Image(visible=False) | |
def rounded_sync(a): | |
return gr.Checkbox(value=a) | |
def ex_blur(a): | |
if a: | |
return gr.Slider(interactive=True) | |
else: | |
return gr.Slider(interactive=False) | |
def refresh(): | |
directory_path = "/data" | |
# directory_path λ΄μ νλͺ©λ€μ 리μ€νΈλ‘ κ°μ Έμ΄ | |
items = os.listdir(directory_path) | |
# ν΄λΉ νλͺ©μ΄ λλ ν 리μΈμ§ νμΈ ν, νΉμ ν΄λλ₯Ό μ μΈν ν΄λ μ΄λ¦λ§ νν°λ§ | |
folders = [item for item in items] | |
folders_tuple = tuple(folders) | |
# νμ¬ μμ λλ ν 리μ ν΄λ μ΄λ¦λ€μ ννλ‘ λ°ν (νΉμ ν΄λ μ μΈ) | |
return folders_tuple | |
def refresh2(): | |
directory_path = "./caa" | |
# directory_path λ΄μ νλͺ©λ€μ 리μ€νΈλ‘ κ°μ Έμ΄ | |
items = os.listdir(directory_path) | |
# ν΄λΉ νλͺ©μ΄ λλ ν 리μΈμ§ νμΈ ν, νΉμ ν΄λλ₯Ό μ μΈν ν΄λ μ΄λ¦λ§ νν°λ§ | |
folders = [item for item in items] | |
folders_tuple = tuple(folders) | |
# νμ¬ μμ λλ ν 리μ ν΄λ μ΄λ¦λ€μ ννλ‘ λ°ν (νΉμ ν΄λ μ μΈ) | |
return folders_tuple | |
def dev(): | |
folders = refresh() | |
return "Do", gr.Dropdown(folders, visible=True, interactive=True) | |
def dev2222(): | |
folders = refresh2() | |
return "Do", gr.Dropdown(folders, visible=True, interactive=True) | |
def dev2(): | |
time = fn.get_kr_time() | |
os.rename("/data/cache", f"/data/{time}") | |
os.mkdir("/data/cache") | |
return "Moved" | |
def dev3(a): | |
fn.zip(a) | |
return f"/data/{a}" | |
def dev4(a): | |
return f"/data/{a}" | |
def dev42222(a): | |
return f"./caa/{a}" | |
def dev5(a): | |
fn.remove(a) | |
return "Deleted" | |
def txt_season_visibility(a): | |
if a == "Other": | |
return gr.Textbox(visible=True), gr.Textbox(visible=True) | |
else: | |
return gr.Textbox(visible=False), gr.Textbox(visible=False) | |
def change_ran(a): | |
if a == "AI Color": | |
ran = random.randrange(1, 1000) | |
return ran | |
else: | |
return 0 | |
def txt_class_visibility(a): | |
if a == "Other": | |
return gr.Textbox(visible=True) | |
else: | |
return gr.Textbox(visible=False) | |
def custom_name(count): | |
visibilities = [True] * len(count) + [False] * (12 - len(count)) | |
return ( | |
gr.Image(label=count[0] if len(count) > 0 else 'Sign', visible=visibilities[0]), | |
gr.Image(label=count[1] if len(count) > 1 else 'Sign', visible=visibilities[1]), | |
gr.Image(label=count[2] if len(count) > 2 else 'Sign', visible=visibilities[2]), | |
gr.Image(label=count[3] if len(count) > 3 else 'Sign', visible=visibilities[3]), | |
gr.Image(label=count[4] if len(count) > 4 else 'Sign', visible=visibilities[4]), | |
gr.Image(label=count[5] if len(count) > 5 else 'Sign', visible=visibilities[5]), | |
gr.Image(label=count[6] if len(count) > 6 else 'Sign', visible=visibilities[6]), | |
gr.Image(label=count[7] if len(count) > 7 else 'Sign', visible=visibilities[7]), | |
gr.Image(label=count[8] if len(count) > 8 else 'Sign', visible=visibilities[8]), | |
gr.Image(label=count[9] if len(count) > 9 else 'Sign', visible=visibilities[9]), | |
gr.Image(label=count[10] if len(count) > 10 else 'Sign', visible=visibilities[10]), | |
gr.Image(label=count[11] if len(count) > 11 else 'Sign', visible=visibilities[11]) | |
) | |
import cairosvg | |
def side_group_img_upload(img): | |
if isinstance(img, str): | |
cairosvg.svg2png(url=img, write_to=f"temp.png") | |
img = Image.open(f"temp.png") | |
size = img.size | |
r = 90/size[1] | |
print((int(size[0]*r), int(size[1]*r))) | |
img = img.resize((int(size[0]*r), int(size[1]*r)), Image.Resampling.LANCZOS) | |
img = img.rotate(270, expand=True) | |
return img | |
#outputs=[preset_name, artist_name, group_name, company_name, top_logo_img, side_group_img, qr_logo_img, sign_img1, sign_im | |
def load_preset(preset): | |
file_path = f"/data/presets/{preset}/" | |
data = pd.read_pickle(file_path+'data.pkl') | |
top_logo_img = Image.open(file_path+'top_logo.png') | |
if os.path.isfile(file_path+'sideNameImage.png'): | |
side_group_img = Image.open(file_path+'sideNameImage.png') | |
else: | |
side_group_img = None | |
qr_logo_img = Image.open(file_path+'qr_logo.png') | |
# μ΄κΈ°ν | |
sign_imgs = [None] * 12 | |
# μ΄λ―Έμ§ λ‘λ | |
for i in range(len(data['artist'])): | |
if i < 12: | |
sign_imgs[i] = Image.open(f"{file_path}{data['artist'][i]}.png") | |
# κ°λ³ λ³μλ‘ μ¬μ©νκ³ μΆλ€λ©΄ | |
sign_img1, sign_img2, sign_img3, sign_img4, sign_img5, sign_img6, \ | |
sign_img7, sign_img8, sign_img9, sign_img10, sign_img11, sign_img12 = sign_imgs | |
return data['preset_name'], data['artist'], data['group'], data['company'], top_logo_img, side_group_img, qr_logo_img, sign_img1, sign_img2, sign_img3, sign_img4, sign_img5, sign_img6, sign_img7, sign_img8, sign_img9, sign_img10, sign_img11, sign_img12 | |