objektify2 / fns.py
tripleS-Dev
zip out of storage
db1db48
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