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