Files

84 lines
3.0 KiB
Bash

#!/bin/sh
set -eu
project_root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
brand_logo="$project_root/src/static/brand-logo.png"
icons="$project_root/src/static/app/icons"
splash="$project_root/src/static/app/splash"
if ! command -v magick >/dev/null 2>&1; then
echo "ImageMagick (magick) is required to generate App assets." >&2
exit 1
fi
if [ ! -f "$brand_logo" ]; then
echo "Brand logo not found: $brand_logo" >&2
exit 1
fi
mkdir -p "$icons" "$splash"
make_icon() {
size=$1
logo_size=$2
output=$3
magick -size "${size}x${size}" xc:'#FFFFFF' \
\( "$brand_logo" -resize "${logo_size}x${logo_size}" \) \
-gravity center -compose over -composite -alpha off -strip "$output"
}
make_splash() {
canvas=$1
logo_size=$2
output=$3
magick -size "$canvas" xc:'#F7F8FA' \
\( "$brand_logo" -resize "${logo_size}x${logo_size}" \) \
-gravity center -compose over -composite -alpha off -strip "$output"
}
# All launch and App Store icons are opaque PNGs. iOS applies its own rounded
# mask; source artwork must remain a square without alpha information.
make_icon 1024 620 "$icons/ios-appstore.png"
make_icon 192 118 "$icons/android-xxxhdpi.png"
make_icon 144 88 "$icons/android-xxhdpi.png"
make_icon 96 60 "$icons/android-xhdpi.png"
make_icon 72 44 "$icons/android-hdpi.png"
make_icon 180 110 "$icons/ios-iphone-app-3x.png"
make_icon 120 74 "$icons/ios-iphone-app-2x.png"
make_icon 120 74 "$icons/ios-iphone-spotlight-3x.png"
make_icon 80 50 "$icons/ios-iphone-spotlight-2x.png"
make_icon 87 54 "$icons/ios-iphone-settings-3x.png"
make_icon 58 36 "$icons/ios-iphone-settings-2x.png"
make_icon 60 38 "$icons/ios-iphone-notification-3x.png"
make_icon 40 26 "$icons/ios-iphone-notification-2x.png"
make_icon 167 104 "$icons/ios-ipad-pro-app-2x.png"
make_icon 152 94 "$icons/ios-ipad-app-2x.png"
make_icon 76 48 "$icons/ios-ipad-app.png"
make_icon 80 50 "$icons/ios-ipad-spotlight-2x.png"
make_icon 40 26 "$icons/ios-ipad-spotlight.png"
make_icon 58 36 "$icons/ios-ipad-settings-2x.png"
make_icon 29 18 "$icons/ios-ipad-settings.png"
make_icon 40 26 "$icons/ios-ipad-notification-2x.png"
make_icon 20 14 "$icons/ios-ipad-notification.png"
make_splash '480x762' 160 "$splash/android-hdpi.png"
make_splash '720x1242' 240 "$splash/android-xhdpi.png"
make_splash '1080x1882' 320 "$splash/android-xxhdpi.png"
make_splash '640x1136' 200 "$splash/ios-iphone-retina40.png"
make_splash '750x1334' 230 "$splash/ios-iphone-retina47.png"
make_splash '1242x2208' 360 "$splash/ios-iphone-retina55.png"
make_splash '1125x2436' 330 "$splash/ios-iphone-x.png"
make_splash '828x1792' 250 "$splash/ios-iphone-896h-2x.png"
make_splash '1242x2688' 370 "$splash/ios-iphone-896h-3x.png"
make_splash '768x1024' 230 "$splash/ios-ipad-portrait7.png"
make_splash '1536x2048' 460 "$splash/ios-ipad-portrait-retina7.png"
make_splash '1668x2224' 500 "$splash/ios-ipad-1112h-2x.png"
make_splash '1668x2388' 500 "$splash/ios-ipad-1194h-2x.png"
make_splash '2048x2732' 610 "$splash/ios-ipad-1366h-2x.png"
echo "Generated App icons and portrait splash images from src/static/brand-logo.png"