Added Main Programm
Added the Main Programm i coded before!
This commit is contained in:
27
main.py
Normal file
27
main.py
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
from flask import *
|
||||||
|
from render.initer import load_themes, render_pic
|
||||||
|
import os
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/", methods=["GET"])
|
||||||
|
def create_pic():
|
||||||
|
name_query = str(request.args.get("name"))
|
||||||
|
theme_query = str(request.args.get("t"))
|
||||||
|
|
||||||
|
filename = render_pic(themes, name_query, theme_query)
|
||||||
|
|
||||||
|
if filename == "error":
|
||||||
|
return "<h1>error</h1><br><h3>check if theme exist or name & theme is given!</h3>"
|
||||||
|
|
||||||
|
return send_file(filename, mimetype='image/gif')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
dirs = 'render/outputs'
|
||||||
|
for f in os.listdir(dirs):
|
||||||
|
os.remove(os.path.join(dirs, f))
|
||||||
|
|
||||||
|
themes = load_themes()
|
||||||
|
app.run(port=888)
|
||||||
BIN
render/__pycache__/initer.cpython-39.pyc
Normal file
BIN
render/__pycache__/initer.cpython-39.pyc
Normal file
Binary file not shown.
BIN
render/fonts/font1.ttf
Normal file
BIN
render/fonts/font1.ttf
Normal file
Binary file not shown.
25
render/initer.py
Normal file
25
render/initer.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
from render.utils.theme import Theme
|
||||||
|
from render.utils.readfile import readfile
|
||||||
|
from render.utils.render_worker import render_worker
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def render_pic(themes, name, theme):
|
||||||
|
if theme == "None" or name == "None" or len(themes)-1 < int(theme):
|
||||||
|
return "error"
|
||||||
|
|
||||||
|
if not os.path.exists(f"render/outputs/{name}{theme}.png"):
|
||||||
|
print("Anfrage noch nicht gerendert, Wird nun erstellt ...")
|
||||||
|
filename = render_worker(name, int(theme), themes)
|
||||||
|
return filename
|
||||||
|
|
||||||
|
else:
|
||||||
|
print("Anfrage wurde schon gerendert, wird nun übergeben ...")
|
||||||
|
return f"render/outputs/{name}{theme}.png"
|
||||||
|
|
||||||
|
|
||||||
|
def load_themes():
|
||||||
|
file = open("render/themelist.txt", "r")
|
||||||
|
liste = readfile(file)
|
||||||
|
file.close()
|
||||||
|
return liste
|
||||||
BIN
render/outputs/Jonas1.png
Normal file
BIN
render/outputs/Jonas1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
BIN
render/outputs/Jonas2.png
Normal file
BIN
render/outputs/Jonas2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
24
render/themelist.txt
Normal file
24
render/themelist.txt
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
0
|
||||||
|
white.png
|
||||||
|
180
|
||||||
|
font1.ttf
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
|
||||||
|
1
|
||||||
|
black.png
|
||||||
|
180
|
||||||
|
font1.ttf
|
||||||
|
255
|
||||||
|
255
|
||||||
|
255
|
||||||
|
|
||||||
|
2
|
||||||
|
white.png
|
||||||
|
180
|
||||||
|
font1.ttf
|
||||||
|
204
|
||||||
|
6
|
||||||
|
5
|
||||||
|
|
||||||
BIN
render/themes/black.png
Normal file
BIN
render/themes/black.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 272 B |
BIN
render/themes/white.png
Normal file
BIN
render/themes/white.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.4 KiB |
BIN
render/utils/__pycache__/readfile.cpython-39.pyc
Normal file
BIN
render/utils/__pycache__/readfile.cpython-39.pyc
Normal file
Binary file not shown.
BIN
render/utils/__pycache__/render_worker.cpython-39.pyc
Normal file
BIN
render/utils/__pycache__/render_worker.cpython-39.pyc
Normal file
Binary file not shown.
BIN
render/utils/__pycache__/text_align.cpython-39.pyc
Normal file
BIN
render/utils/__pycache__/text_align.cpython-39.pyc
Normal file
Binary file not shown.
BIN
render/utils/__pycache__/theme.cpython-39.pyc
Normal file
BIN
render/utils/__pycache__/theme.cpython-39.pyc
Normal file
Binary file not shown.
41
render/utils/readfile.py
Normal file
41
render/utils/readfile.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
from render.utils.theme import Theme
|
||||||
|
|
||||||
|
|
||||||
|
def readfile(file):
|
||||||
|
liste = []
|
||||||
|
i = 0
|
||||||
|
nummer = ""
|
||||||
|
dataname = ""
|
||||||
|
bold = ""
|
||||||
|
fontname = ""
|
||||||
|
color1 = ""
|
||||||
|
color2 = ""
|
||||||
|
color3 = ""
|
||||||
|
for line in file:
|
||||||
|
if i == 0:
|
||||||
|
nummer = line.rstrip()
|
||||||
|
i += 1
|
||||||
|
elif i == 1:
|
||||||
|
dataname = line.rstrip()
|
||||||
|
i += 1
|
||||||
|
elif i == 2:
|
||||||
|
bold = line.rstrip()
|
||||||
|
i += 1
|
||||||
|
elif i == 3:
|
||||||
|
fontname = line.rstrip()
|
||||||
|
i += 1
|
||||||
|
elif i == 4:
|
||||||
|
color1 = line.rstrip()
|
||||||
|
i += 1
|
||||||
|
elif i == 5:
|
||||||
|
color2 = line.rstrip()
|
||||||
|
i += 1
|
||||||
|
elif i == 6:
|
||||||
|
color3 = line.rstrip()
|
||||||
|
i += 1
|
||||||
|
elif i == 7:
|
||||||
|
i = 0
|
||||||
|
print("Geladendes Thema: ", nummer, dataname, bold, fontname, color1, color2, color3)
|
||||||
|
liste += [Theme(nummer, dataname, bold, fontname, color1, color2, color3)]
|
||||||
|
|
||||||
|
return liste
|
||||||
17
render/utils/render_worker.py
Normal file
17
render/utils/render_worker.py
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
from PIL import Image
|
||||||
|
from PIL import ImageFont
|
||||||
|
from PIL import ImageDraw
|
||||||
|
from render.utils.text_align import get_text_align
|
||||||
|
|
||||||
|
|
||||||
|
def render_worker(name: str, theme: int, themes):
|
||||||
|
img = Image.open(f"render/themes/{themes[theme].getdataname()}")
|
||||||
|
font = ImageFont.truetype(f"render/fonts/{themes[theme].getfontname()}", int(themes[theme].getbold()))
|
||||||
|
|
||||||
|
draw = ImageDraw.Draw(img)
|
||||||
|
|
||||||
|
msg = name
|
||||||
|
|
||||||
|
draw.text(get_text_align(msg, font, (1024, 1024)), msg, (int(themes[theme].getcolor1()), int(themes[theme].getcolor2()), int(themes[theme].getcolor3())), font=font)
|
||||||
|
img.save(f"render/outputs/{name}{theme}.png")
|
||||||
|
return f"render/outputs/{name}{theme}.png"
|
||||||
16
render/utils/speicher
Normal file
16
render/utils/speicher
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
from PIL import Image
|
||||||
|
from PIL import ImageFont
|
||||||
|
from PIL import ImageDraw
|
||||||
|
from render.utils.text_align import get_text_align
|
||||||
|
|
||||||
|
img = Image.open("themes/1.png")
|
||||||
|
font = ImageFont.truetype("fonts/font1.ttf", 180)
|
||||||
|
|
||||||
|
width, height = 1024, 1024
|
||||||
|
|
||||||
|
draw = ImageDraw.Draw(img)
|
||||||
|
|
||||||
|
msg = "Himmelberg"
|
||||||
|
|
||||||
|
draw.text(get_text_align(msg, font, (1024, 1024)), msg, (0, 0, 0), font=font)
|
||||||
|
img.save("test.png")
|
||||||
13
render/utils/text_align.py
Normal file
13
render/utils/text_align.py
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
from PIL import Image
|
||||||
|
from PIL import ImageFont
|
||||||
|
from PIL import ImageDraw
|
||||||
|
|
||||||
|
|
||||||
|
def get_text_align(text, font, pic_size):
|
||||||
|
ascent, descent = font.getmetrics()
|
||||||
|
w = font.getmask(text).getbbox()[2]
|
||||||
|
h = font.getmask(text).getbbox()[3] + descent
|
||||||
|
|
||||||
|
h += int(h * 0.21)
|
||||||
|
|
||||||
|
return (pic_size[0] - w) / 2, (pic_size[1] - h) / 2
|
||||||
30
render/utils/theme.py
Normal file
30
render/utils/theme.py
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
class Theme:
|
||||||
|
def __init__(self, nummer, dataname, bold, fontname, color1, color2, color3):
|
||||||
|
self.__Nummer = nummer
|
||||||
|
self.__Dataname = dataname
|
||||||
|
self.__Bold = bold
|
||||||
|
self.__Fontname = fontname
|
||||||
|
self.__Color1 = color1
|
||||||
|
self.__Color2 = color2
|
||||||
|
self.__Color3 = color3
|
||||||
|
|
||||||
|
def getnummer(self):
|
||||||
|
return self.__Nummer
|
||||||
|
|
||||||
|
def getdataname(self):
|
||||||
|
return self.__Dataname
|
||||||
|
|
||||||
|
def getbold(self):
|
||||||
|
return self.__Bold
|
||||||
|
|
||||||
|
def getfontname(self):
|
||||||
|
return self.__Fontname
|
||||||
|
|
||||||
|
def getcolor1(self):
|
||||||
|
return self.__Color1
|
||||||
|
|
||||||
|
def getcolor2(self):
|
||||||
|
return self.__Color2
|
||||||
|
|
||||||
|
def getcolor3(self):
|
||||||
|
return self.__Color3
|
||||||
Reference in New Issue
Block a user