Files
helvoirtgevelreiniging.nl/scripts/degrade-before.py
T

33 lines
1.3 KiB
Python

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)