diff --git a/main.py b/main.py new file mode 100644 index 0000000..eb96698 --- /dev/null +++ b/main.py @@ -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 "

error


check if theme exist or name & theme is given!

" + + 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) diff --git a/render/__pycache__/initer.cpython-39.pyc b/render/__pycache__/initer.cpython-39.pyc new file mode 100644 index 0000000..cc7eacd Binary files /dev/null and b/render/__pycache__/initer.cpython-39.pyc differ diff --git a/render/fonts/font1.ttf b/render/fonts/font1.ttf new file mode 100644 index 0000000..d2190b5 Binary files /dev/null and b/render/fonts/font1.ttf differ diff --git a/render/initer.py b/render/initer.py new file mode 100644 index 0000000..fd4c598 --- /dev/null +++ b/render/initer.py @@ -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 diff --git a/render/outputs/Jonas1.png b/render/outputs/Jonas1.png new file mode 100644 index 0000000..f1695c7 Binary files /dev/null and b/render/outputs/Jonas1.png differ diff --git a/render/outputs/Jonas2.png b/render/outputs/Jonas2.png new file mode 100644 index 0000000..046e280 Binary files /dev/null and b/render/outputs/Jonas2.png differ diff --git a/render/themelist.txt b/render/themelist.txt new file mode 100644 index 0000000..1abc7ae --- /dev/null +++ b/render/themelist.txt @@ -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 + diff --git a/render/themes/black.png b/render/themes/black.png new file mode 100644 index 0000000..b40186d Binary files /dev/null and b/render/themes/black.png differ diff --git a/render/themes/white.png b/render/themes/white.png new file mode 100644 index 0000000..6da7f65 Binary files /dev/null and b/render/themes/white.png differ diff --git a/render/utils/__pycache__/readfile.cpython-39.pyc b/render/utils/__pycache__/readfile.cpython-39.pyc new file mode 100644 index 0000000..9fa5b33 Binary files /dev/null and b/render/utils/__pycache__/readfile.cpython-39.pyc differ diff --git a/render/utils/__pycache__/render_worker.cpython-39.pyc b/render/utils/__pycache__/render_worker.cpython-39.pyc new file mode 100644 index 0000000..a5bdf7f Binary files /dev/null and b/render/utils/__pycache__/render_worker.cpython-39.pyc differ diff --git a/render/utils/__pycache__/text_align.cpython-39.pyc b/render/utils/__pycache__/text_align.cpython-39.pyc new file mode 100644 index 0000000..fe6be8a Binary files /dev/null and b/render/utils/__pycache__/text_align.cpython-39.pyc differ diff --git a/render/utils/__pycache__/theme.cpython-39.pyc b/render/utils/__pycache__/theme.cpython-39.pyc new file mode 100644 index 0000000..b3729f8 Binary files /dev/null and b/render/utils/__pycache__/theme.cpython-39.pyc differ diff --git a/render/utils/readfile.py b/render/utils/readfile.py new file mode 100644 index 0000000..967046d --- /dev/null +++ b/render/utils/readfile.py @@ -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 diff --git a/render/utils/render_worker.py b/render/utils/render_worker.py new file mode 100644 index 0000000..c5fc8ff --- /dev/null +++ b/render/utils/render_worker.py @@ -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" diff --git a/render/utils/speicher b/render/utils/speicher new file mode 100644 index 0000000..977dccd --- /dev/null +++ b/render/utils/speicher @@ -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") \ No newline at end of file diff --git a/render/utils/text_align.py b/render/utils/text_align.py new file mode 100644 index 0000000..cb91f1c --- /dev/null +++ b/render/utils/text_align.py @@ -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 diff --git a/render/utils/theme.py b/render/utils/theme.py new file mode 100644 index 0000000..d066775 --- /dev/null +++ b/render/utils/theme.py @@ -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