from PIL import Image, ImageEnhance, ImageDraw, ImageFilter import random random.seed(7) im = Image.open("public/images/hero-after.webp").convert("RGB") w, h = im.size # ontkleuren + verdonkeren im = ImageEnhance.Color(im).enhance(0.5) im = ImageEnhance.Brightness(im).enhance(0.82) im = ImageEnhance.Contrast(im).enhance(0.92) # groen/grijs algen-overlay, sterker naar onderen ov = Image.new("RGB", (w, h), (60, 78, 55)) mask = Image.new("L", (w, h), 0) md = mask.load() for y in range(h): base = int(40 + 150 * (y / h) ** 1.6) # onder veel sterker for x in range(0, w, 4): v = base md[x, y] = max(0, min(190, v)) if x+1 < w: md[x+1, y] = md[x, y] if x+2 < w: md[x+2, y] = md[x, y] if x+3 < w: md[x+3, y] = md[x, y] mask = mask.filter(ImageFilter.GaussianBlur(8)) im = Image.composite(ov, im, mask) # donkere drip-strepen d = ImageDraw.Draw(im, "RGBA") for _ in range(70): x = random.randint(0, w); top = random.randint(0, int(h*0.5)); ln = random.randint(int(h*0.2), int(h*0.7)) a = random.randint(12, 34) d.line([(x, top), (x + random.randint(-6,6), top+ln)], fill=(30, 40, 30, a), width=random.randint(1,3)) im = im.filter(ImageFilter.GaussianBlur(0.4)) im.save("public/images/hero-before.webp", "WEBP", quality=88, method=6) print("OK hero-before.webp", im.size)