from PIL import Image, ImageDraw, ImageFilter

W, H = 1200, 1800
img = Image.new("RGB", (W, H))
d = ImageDraw.Draw(img)

# vertical gradient deep ink -> violet
top = (24, 17, 52)     # 181134
bot = (74, 44, 130)    # 4A2C82
for y in range(H):
    t = y / H
    r = int(top[0] + (bot[0] - top[0]) * t)
    g = int(top[1] + (bot[1] - top[1]) * t)
    b = int(top[2] + (bot[2] - top[2]) * t)
    d.line([(0, y), (W, y)], fill=(r, g, b))

# glow blobs
blobs = [
    (900, 500, 380, (124, 58, 237, 160)),   # violet
    (300, 1250, 340, (245, 158, 11, 110)),  # amber
    (800, 1500, 300, (168, 85, 247, 130)),  # magenta
    (250, 300, 260, (91, 33, 182, 150)),
]
layer = Image.new("RGBA", (W, H), (0, 0, 0, 0))
ld = ImageDraw.Draw(layer)
for x, y, r, c in blobs:
    ld.ellipse([x - r, y - r, x + r, y + r], fill=c)
layer = layer.filter(ImageFilter.GaussianBlur(160))

img = Image.alpha_composite(img.convert("RGBA"), layer).convert("RGB")
img = img.filter(ImageFilter.GaussianBlur(6))
img.save(r"C:\laragon\www\worker-system\ai-image-ppt\cover_grad.jpg", quality=90)
print("cover image done")
