Spaces:
Building
Building
File size: 3,566 Bytes
f8c7305 7de72ad f8c7305 7de72ad c2743bd 7de72ad c2743bd f8c7305 23e5a2c f8c7305 f011119 fc00326 f8c7305 f011119 f8c7305 a34a680 f8c7305 a34a680 f8c7305 a34a680 f8c7305 a34a680 f8c7305 a34a680 f8c7305 a34a680 f8c7305 f011119 f8c7305 f011119 f8c7305 f011119 f8c7305 f011119 f8c7305 f011119 6f360cf 7de72ad f011119 7de72ad f011119 7de72ad fc00326 f011119 fc00326 6f360cf fc00326 76a257d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
from PIL import Image, ImageDraw, ImageFont, ImageEnhance
from pilmoji import Pilmoji
from flask import Flask, request, send_file
import textwrap
import requests
import warnings
import base64
import io
warnings.simplefilter("ignore")
BASE_GD_IMAGE = Image.open("images/base-gd.png")
BASE_IMAGE = Image.open("images/base.png")
MPLUS_FONT = ImageFont.truetype("fonts/MPLUSRounded1c-Regular.ttf", size=16)
def draw_text(im, ofs, string, font="fonts/MPLUSRounded1c-Regular.ttf", size=16, color=(0, 0, 0, 255), split_len=None, padding=4, auto_expand=False, disable_dot_wrap=False):
draw = ImageDraw.Draw(im)
fontObj = ImageFont.truetype(font, size=size)
pure_lines = []
pos = 0
l = ""
if not disable_dot_wrap:
for char in string:
if char == "\n":
pure_lines.append(l)
l = ""
pos += 1
elif char == "γ" or char == ",":
pure_lines.append(l + ("γ" if char == "γ" else ","))
l = ""
pos += 1
elif char == "γ" or char == ".":
pure_lines.append(l + ("γ" if char == "γ" else "."))
l = ""
pos += 1
else:
l += char
pos += 1
if l:
pure_lines.append(l)
else:
pure_lines = string.split("\n")
lines = []
for line in pure_lines:
lines.extend(textwrap.wrap(line, width=split_len))
dy = 0
draw_lines = []
for line in lines:
tsize = fontObj.getsize(line)
ofs_y = ofs[1] + dy
t_height = tsize[1]
x = int(ofs[0] - (tsize[0]/2))
draw_lines.append((x, ofs_y, line))
ofs_y += t_height + padding
dy += t_height + padding
adj_y = -30 * (len(draw_lines)-1)
for dl in draw_lines:
with Pilmoji(im) as p:
p.text((dl[0], (adj_y + dl[1])), dl[2], font=fontObj, fill=color)
real_y = ofs[1] + adj_y + dy
return (0, dy, real_y)
def gen(name, tag, id, content, icon):
img = BASE_IMAGE.copy()
icon = Image.open(io.BytesIO(requests.get(icon).content))
icon = icon.resize((720, 720), Image.LANCZOS)
icon = icon.convert("L")
icon_filtered = ImageEnhance.Brightness(icon)
img.paste(icon_filtered.enhance(0.7), (0, 0))
img.paste(BASE_GD_IMAGE, (0, 0), BASE_GD_IMAGE)
tx = ImageDraw.Draw(img)
tsize_t = draw_text(img, (890, 270), content, size=45, color=(255, 255, 255, 255), split_len=16, auto_expand=True)
name_y = tsize_t[2] + 40
tsize_name = draw_text(img, (890, name_y), f"{name}#{tag}", size=25, color=(255, 255, 255, 255), split_len=25, disable_dot_wrap=True)
id_y = name_y + tsize_name[1] + 4
tsize_id = draw_text(img, (890, id_y), id, size=18, color=(180, 180, 180, 255), split_len=45, disable_dot_wrap=True)
tx.text((1125, 694), "TakasumiBOT#7189",font=MPLUS_FONT, fill=(120, 120, 120, 255))
file = io.BytesIO()
img.save(file, format="PNG", quality=95)
file.seek(0)
return file
app = Flask(__name__)
@app.route("/", methods=["GET"])
def normal():
res = gen(
request.args.get("name") or "εη‘γ",
request.args.get("tag") or "0000",
request.args.get("id") or "0000000000000000000",
request.args.get("content") or "γγγ―γγΉγγ§γ",
request.args.get("icon") or "https://cdn.discordapp.com/embed/avatars/0.png"
)
return send_file(res, mimetype="image/png")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=3000)
|