51 lines
1.7 KiB
Python
Executable File
51 lines
1.7 KiB
Python
Executable File
from PIL import Image, ImageDraw
|
|
|
|
def generate_icon(size, filename):
|
|
img = Image.new("RGBA", (size, size), (0, 0, 0, 0))
|
|
draw = ImageDraw.Draw(img)
|
|
|
|
# Rounded rectangle background
|
|
corner_radius = size // 5
|
|
bg_color = (255, 107, 53, 255) # Primary orange
|
|
draw.rounded_rectangle([0, 0, size, size], radius=corner_radius, fill=bg_color)
|
|
|
|
# Outer plate rim
|
|
center = size // 2
|
|
rim_radius = int(size * 0.38)
|
|
draw.ellipse(
|
|
[center - rim_radius, center - rim_radius, center + rim_radius, center + rim_radius],
|
|
fill=(255, 255, 255, 240)
|
|
)
|
|
|
|
# Inner plate circle
|
|
inner_radius = int(size * 0.30)
|
|
draw.ellipse(
|
|
[center - inner_radius, center - inner_radius, center + inner_radius, center + inner_radius],
|
|
fill=(245, 247, 250, 255)
|
|
)
|
|
|
|
# Food accent cloche / fork / dish shapes
|
|
cloche_r = int(size * 0.18)
|
|
draw.pieslice(
|
|
[center - cloche_r, center - cloche_r, center + cloche_r, center + cloche_r],
|
|
start=180, end=360, fill=(255, 107, 53, 255)
|
|
)
|
|
# Cloche base line
|
|
draw.line(
|
|
[(center - cloche_r, center), (center + cloche_r, center)],
|
|
fill=(255, 107, 53, 255), width=max(2, size // 40)
|
|
)
|
|
# Cloche knob
|
|
knob_r = max(2, size // 32)
|
|
draw.ellipse(
|
|
[center - knob_r, center - cloche_r - knob_r, center + knob_r, center - cloche_r + knob_r],
|
|
fill=(255, 107, 53, 255)
|
|
)
|
|
|
|
img.save(filename, "PNG")
|
|
print(f"Generated {filename}")
|
|
|
|
if __name__ == "__main__":
|
|
generate_icon(192, "/home/maxi/Projekt/wtc.waiswuaschd.de/app/static/icon-192.png")
|
|
generate_icon(512, "/home/maxi/Projekt/wtc.waiswuaschd.de/app/static/icon-512.png")
|