From 80281d1c2c4de32bc69b754d4d3908d691d91eb4 Mon Sep 17 00:00:00 2001 From: elpatron Date: Tue, 18 Mar 2025 16:20:31 +0100 Subject: [PATCH] =?UTF-8?q?Feat:=20App-Icons=20f=C3=BCr=20PWA=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/generate_icons.py | 39 +++++++++++++++++++++++++++++++++ static/images/icon-192x192.png | Bin 0 -> 2579 bytes static/images/icon-512x512.png | Bin 0 -> 7033 bytes static/images/icon.svg | 25 +++++++++++++++++++++ 4 files changed, 64 insertions(+) create mode 100644 scripts/generate_icons.py create mode 100644 static/images/icon-192x192.png create mode 100644 static/images/icon-512x512.png create mode 100644 static/images/icon.svg diff --git a/scripts/generate_icons.py b/scripts/generate_icons.py new file mode 100644 index 0000000..26305bb --- /dev/null +++ b/scripts/generate_icons.py @@ -0,0 +1,39 @@ +from PIL import Image, ImageDraw, ImageFont +import os + +def create_icon(size): + # Erstelle ein neues Bild mit grünem Hintergrund + image = Image.new('RGB', (size, size), '#4CAF50') + draw = ImageDraw.Draw(image) + + # Versuche, eine Schriftart zu laden + try: + font = ImageFont.truetype("arial.ttf", size // 3) + except: + font = ImageFont.load_default() + + # Text "MEDI" zeichnen + text = "MEDI" + text_bbox = draw.textbbox((0, 0), text, font=font) + text_width = text_bbox[2] - text_bbox[0] + text_height = text_bbox[3] - text_bbox[1] + x = (size - text_width) // 2 + y = (size - text_height) // 2 + draw.text((x, y), text, fill='white', font=font) + + # Speichere das Icon + output_file = f'static/images/icon-{size}x{size}.png' + image.save(output_file, 'PNG') + print(f'Icon {size}x{size} generiert: {output_file}') + +def main(): + # Erstelle das Verzeichnis, falls es nicht existiert + os.makedirs('static/images', exist_ok=True) + + # Generiere Icons in verschiedenen Größen + sizes = [192, 512] + for size in sizes: + create_icon(size) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/static/images/icon-192x192.png b/static/images/icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..07e2c5fb2b9cc10ab3974aad93a6a7515b63a4fb GIT binary patch literal 2579 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 + + + + + + + MEDI + + + + + \ No newline at end of file