39 lines
1.6 KiB
Python
39 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""iPhone-schermafbeeldingen klaarmaken voor de App Store.
|
|
|
|
Per bestand in de invoermap:
|
|
- de statusbalk bovenin (tijd, 5G, batterij, opname- en microfoonindicator) wordt overgeschilderd met
|
|
de kleur van de kop van de app, zodat er geen tijd, netwerk of toestelinfo in staat;
|
|
- het plaatje wordt op 1290 x 2796 gebracht (iPhone 6,9 inch, toegestaan door de App Store).
|
|
Alleen de statusbalk wordt aangepast; de rest van het scherm blijft zoals het is.
|
|
|
|
Gebruik: python tools/appstore-schermen.py <invoermap> <uitvoermap>
|
|
Invoer: ORIGINELE iPhone-schermafbeeldingen (1179 x 2556 of 1290 x 2796, dezelfde beeldverhouding).
|
|
Een verkleind plaatje (bijvoorbeeld uit een chat) wordt onscherp zodra het naar 1290 x 2796 groeit.
|
|
Nodig: Pillow (pip install pillow).
|
|
"""
|
|
import sys, pathlib
|
|
from PIL import Image
|
|
|
|
DOEL = (1290, 2796)
|
|
STATUSBALK = 0.055 # aandeel van de hoogte dat de statusbalk beslaat (iPhone met Dynamic Island)
|
|
|
|
def verwerk(pad, uit):
|
|
im = Image.open(pad).convert("RGB")
|
|
b, h = im.size
|
|
if abs(b / h - DOEL[0] / DOEL[1]) > 0.01:
|
|
raise SystemExit(f"{pad.name}: beeldverhouding {b}x{h} past niet bij een iPhone-schermafbeelding")
|
|
rand = int(h * STATUSBALK)
|
|
kleur = im.getpixel((b // 2, rand + 4))
|
|
im.paste(kleur, (0, 0, b, rand))
|
|
im = im.resize(DOEL, Image.LANCZOS)
|
|
im.save(uit / (pad.stem + ".png"), optimize=True)
|
|
|
|
if __name__ == "__main__":
|
|
inv, uit = pathlib.Path(sys.argv[1]), pathlib.Path(sys.argv[2])
|
|
uit.mkdir(parents=True, exist_ok=True)
|
|
for f in sorted(inv.iterdir()):
|
|
if f.suffix.lower() in (".png", ".jpg", ".jpeg"):
|
|
verwerk(f, uit)
|
|
print("klaar:", f.name)
|