Added Main Programm

Added the Main Programm i coded before!
This commit is contained in:
Jonas
2022-09-27 15:08:14 +02:00
committed by GitHub
parent 98ce09c169
commit 36066b297e
18 changed files with 193 additions and 0 deletions

27
main.py Normal file
View 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)

Binary file not shown.

BIN
render/fonts/font1.ttf Normal file

Binary file not shown.

25
render/initer.py Normal file
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
render/outputs/Jonas2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

24
render/themelist.txt Normal file
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

BIN
render/themes/white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

41
render/utils/readfile.py Normal file
View 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

View 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
View 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")

View 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
View 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