Uitrol 31-10-2026 12:23
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
#!/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)
|
||||
+18
-4
@@ -3,6 +3,8 @@
|
||||
#
|
||||
# tools/ios-bouwen.sh controle alleen kijken of de Mac er klaar voor is
|
||||
# tools/ios-bouwen.sh simulator bouwen en starten in de iPhone-simulator (geen account nodig)
|
||||
# tools/ios-bouwen.sh ipad zoals 'simulator', maar in de iPad-simulator (voor App Store-schermen);
|
||||
# andere simulator: IOS_SIMULATOR="iPad Pro 13-inch (M4)" tools/ios-bouwen.sh simulator
|
||||
# tools/ios-bouwen.sh toestel bouwen en op een aangesloten iPhone zetten (Apple-ID / team nodig)
|
||||
# tools/ios-bouwen.sh archief een .ipa voor App Store Connect / TestFlight maken
|
||||
# (betaald Apple Developer Program, distributiecertificaat en
|
||||
@@ -43,11 +45,21 @@ case "$MODUS" in
|
||||
controle)
|
||||
controle
|
||||
;;
|
||||
simulator)
|
||||
simulator|ipad)
|
||||
controle
|
||||
[[ "$MODUS" == "ipad" && -z "${IOS_SIMULATOR:-}" ]] && IOS_SIMULATOR="iPad Pro 13-inch (M4)"
|
||||
stap "Bouwen en starten in de simulator"
|
||||
# Eerst de lijst met simulators tonen, zodat je ziet welke je kunt kiezen.
|
||||
xcrun simctl list devices available | grep -i iphone | head -5 || true
|
||||
xcrun simctl list devices available | grep -iE 'iphone|ipad' | head -12 || true
|
||||
APPARAAT=()
|
||||
if [[ -n "${IOS_SIMULATOR:-}" ]]; then
|
||||
UDID="$(xcrun simctl list devices available | grep -F " ${IOS_SIMULATOR} (" | head -1 | sed -E 's/.*\(([0-9A-F-]{36})\).*/\1/')"
|
||||
[[ -n "$UDID" ]] || stop "simulator '${IOS_SIMULATOR}' niet gevonden; kies een naam uit de lijst hierboven (Xcode > Settings > Components voor extra simulators)."
|
||||
echo "Simulator: ${IOS_SIMULATOR} ($UDID)"
|
||||
xcrun simctl boot "$UDID" 2>/dev/null || true
|
||||
open -a Simulator
|
||||
APPARAAT=(-p:_DeviceName=":v2:udid=$UDID")
|
||||
fi
|
||||
# Eerst bouwen, daarna starten: met alleen -t:Run bouwt hij de app niet en weet hij niet wat
|
||||
# hij moet starten. MetAndroid=false: op de Mac staat alleen de iOS-werkbelasting.
|
||||
# CodesignKey=-: een eenvoudige lokale handtekening. De simulator wil geen certificaat, maar de
|
||||
@@ -55,7 +67,9 @@ case "$MODUS" in
|
||||
dotnet build "$PROJECT" -f "$TFM" -p:MetIos=true -p:MetAndroid=false \
|
||||
-p:RuntimeIdentifier=iossimulator-arm64 -p:CodesignKey=-
|
||||
dotnet build "$PROJECT" -f "$TFM" -p:MetIos=true -p:MetAndroid=false -t:Run \
|
||||
-p:RuntimeIdentifier=iossimulator-arm64 -p:CodesignKey=-
|
||||
-p:RuntimeIdentifier=iossimulator-arm64 -p:CodesignKey=- ${APPARAAT[@]+"${APPARAAT[@]}"}
|
||||
echo
|
||||
echo "Schermafdruk (zonder statusbalk-ruis, op ware grootte): xcrun simctl io booted screenshot ~/Desktop/ipad-1.png"
|
||||
;;
|
||||
toestel)
|
||||
controle
|
||||
@@ -98,6 +112,6 @@ case "$MODUS" in
|
||||
echo "sleep de .ipa erin. Daarna staat de build na enkele minuten in App Store Connect > TestFlight."
|
||||
;;
|
||||
*)
|
||||
stop "onbekende optie '$MODUS' (kies: controle, simulator, toestel of archief)"
|
||||
stop "onbekende optie '$MODUS' (kies: controle, simulator, ipad, toestel of archief)"
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user