#!/usr/bin/env python3 """Genera le icone dell'app in stile Sailfish OS: sfondo a gradiente ambrato->arancio bruciato con angoli molto arrotondati, un uovo bianco con ombra morbida e una pagliuzza di grano. Dimensioni: 86, 108, 128, 172 (struttura standard hicolor).""" import os from PIL import Image, ImageDraw C_TOP = (250, 214, 137) # #FAD689 ambrato chiaro C_BOT = (196, 122, 41) # #C47A29 arancio bruciato EGG = (255, 253, 246) STRAW = (255, 236, 179) def gradient(size, c1, c2): img = Image.new("RGB", (size, size)) d = ImageDraw.Draw(img) for y in range(size): t = y / (size - 1) d.line([(0, y), (size, y)], fill=(int(c1[0] + (c2[0] - c1[0]) * t), int(c1[1] + (c2[1] - c1[1]) * t), int(c1[2] + (c2[2] - c1[2]) * t))) return img def draw_icon(size): m = size * 0.05 r = size * 0.22 out = Image.new("RGBA", (size, size), (0, 0, 0, 0)) grad = gradient(size, C_TOP, C_BOT).convert("RGBA") mask = Image.new("L", (size, size), 0) ImageDraw.Draw(mask).rounded_rectangle([m, m, size - m, size - m], radius=r, fill=255) out.paste(grad, (0, 0), mask) d = ImageDraw.Draw(out, "RGBA") # pagliuzza: due archi chiari in basso, suggeriscono il nido lw = max(2, int(size * 0.03)) for k, off in ((0.0, 0.0), (0.06, 0.03)): d.arc([size * (0.16 + k), size * (0.62 + off), size * (0.84 - k), size * (1.02 + off)], start=200, end=340, fill=STRAW + (110,), width=lw) # uovo bianco, leggermente spostato in alto, con ombra morbida ex0, ey0 = size * 0.30, size * 0.22 ex1, ey1 = size * 0.70, size * 0.70 d.ellipse([ex0 + size * 0.015, ey0 + size * 0.02, ex1 + size * 0.015, ey1 + size * 0.02], fill=(90, 50, 10, 70)) d.ellipse([ex0, ey0, ex1, ey1], fill=EGG + (255,)) # riflesso d.ellipse([size * 0.35, size * 0.30, size * 0.45, size * 0.40], fill=(255, 255, 255, 120)) return out def main(): for s in (86, 108, 128, 172): os.makedirs(f"icons/{s}x{s}", exist_ok=True) draw_icon(s).save(f"icons/{s}x{s}/harbour-henflow.png") print("icone scritte: 86, 108, 128, 172") if __name__ == "__main__": main()