nova2_backend / app.py
chohj06ms's picture
Rename frontend.py to app.py
458216b verified
import gradio as gr
import backend as bk
from PIL import Image, ImageDraw, ImageFont, ImageColor, ImageFilter, ImageSequence
red_arr = Image.open("red_arr.png")
blue_arr = Image.open("blue_arr.png")
def como_txt(text):
image_size = (180, 50)
image = Image.new('RGBA', image_size, (255, 255, 255, 0))
draw = ImageDraw.Draw(image)
font = ImageFont.truetype("Helvetica_Neue_LT_Std_75_Bold.otf", 50)
text_color = (200, 200, 200)
# 텍스트의 경계 상자 계산
text_bbox = draw.textbbox((0, 0), text, font=font)
text_width = text_bbox[2] - text_bbox[0]
text_height = text_bbox[3] - text_bbox[1]
# 텍스트를 이미지 중앙에 정렬
text_x = (image_size[0] - text_width) / 2
text_y = (image_size[1] - text_height) / 2
draw.text((text_x, text_y), text, fill=text_color, font=font)
return image
def fn(txt):
nft_id = bk.ad_srch(txt)
como = bk.como_srch(nft_id)
como_img = como_txt(como)
base_img = Image.open("base_img2.png")
name_paste_position = (219, 295)
base_img.paste(como_img, name_paste_position, como_img)
obj = bk.obj_srch(nft_id)
obj_img = como_txt(obj)
name_paste_position = (219, 205)
base_img.paste(obj_img, name_paste_position, obj_img)
base_img = bk.names(txt, base_img)
token_ids, token_from, token_to = bk.find_trans(nft_id, 4)
token_name = [None] * len(token_ids) # token_ids의 길이만큼 token_name 배열 초기화
for i in range(len(token_ids)):
token_name[i] = bk.web3_find(int(token_ids[i]))
token_from_name = [0, 0, 0, 0]
token_from_name[0] = bk.ad2id(token_from[0])
token_from_name[1] = bk.ad2id(token_from[1])
token_from_name[2] = bk.ad2id(token_from[2])
token_from_name[3] = bk.ad2id(token_from[3])
token_to_name = [0, 0, 0, 0]
token_to_name[0] = bk.ad2id(token_to[0])
token_to_name[1] = bk.ad2id(token_to[1])
token_to_name[2] = bk.ad2id(token_to[2])
token_to_name[3] = bk.ad2id(token_to[3])
print(token_from_name[0])
print(token_from_name[1])
print(token_from_name[2])
base_img = bk.center_txt(base_img, token_from_name[0], 463, 143, 327, 50, 42)
base_img = bk.center_txt(base_img, token_from_name[1], 463, 288, 327, 50, 42)
base_img = bk.center_txt(base_img, token_from_name[2], 463, 436, 327, 50, 42)
base_img = bk.center_txt(base_img, token_from_name[3], 463, 583, 327, 50, 42)
base_img = bk.center_txt(base_img, token_to_name[0], 909, 143, 327, 50, 42)
base_img = bk.center_txt(base_img, token_to_name[1], 909, 288, 327, 50, 42)
base_img = bk.center_txt(base_img, token_to_name[2], 909, 436, 327, 50, 42)
base_img = bk.center_txt(base_img, token_to_name[3], 909, 583, 327, 50, 42)
base_img = bk.center_txt(base_img, token_name[0], 457, 207, 785, 50, 44)
base_img = bk.center_txt(base_img, token_name[1], 457, 346, 785, 50, 44)
base_img = bk.center_txt(base_img, token_name[2], 457, 494, 785, 50, 44)
base_img = bk.center_txt(base_img, token_name[3], 457, 642, 785, 50, 44)
timeStamp = bk.find_first(nft_id)
timeStamp = bk.first_time(timeStamp[0])
print(timeStamp)
base_img = bk.names(timeStamp, base_img, 640, 66)
print(str(token_from[0]))
print(str(nft_id))
if str(token_from[0]) == str(nft_id).lower():
base_img.paste(blue_arr, (823, 152), blue_arr)
else:
base_img.paste(red_arr, (823, 152), red_arr)
if str(token_from[1]) == str(nft_id).lower():
base_img.paste(blue_arr, (823, 297), blue_arr)
else:
base_img.paste(red_arr, (823, 297), red_arr)
if str(token_from[2]) == str(nft_id).lower():
base_img.paste(blue_arr, (823, 444), blue_arr)
else:
base_img.paste(red_arr, (823, 444), red_arr)
if str(token_from[3]) == str(nft_id).lower():
base_img.paste(blue_arr, (823, 592), blue_arr)
else:
base_img.paste(red_arr, (823, 592), red_arr)
base_img.save("img.png")
return "img.png"
with gr.Blocks() as interface:
txt = gr.Textbox()
out = gr.Image()
sub = gr.Button()
sub.click(fn, txt, out)
interface.launch()