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()