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