File size: 3,471 Bytes
f8c7305 7de72ad f8c7305 7de72ad c2743bd 7de72ad c2743bd f8c7305 23e5a2c f8c7305 c94f95b f8c7305 c94f95b f8c7305 a34a680 f8c7305 a34a680 f8c7305 a34a680 f8c7305 a34a680 f8c7305 a34a680 f8c7305 a34a680 f8c7305 c94f95b f8c7305 c94f95b f8c7305 c94f95b f8c7305 c94f95b f8c7305 bf8ade6 7de72ad bf8ade6 7de72ad c7e2be4 7de72ad bf8ade6 7de72ad bf8ade6 0c0854d |
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 |
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 make(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 main():
res = make(
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")
app.run(host="0.0.0.0",port=3000) |