#!/bin/bash # Generates icons for Bogam mobile and web apps # Usage: ./resize_logo_into_icons.sh # Requires: ImageMagick (brew install imagemagick) if ! command -v magick &> /dev/null; then echo "Error: ImageMagick v7 not installed. Install with: brew install imagemagick" exit 1 fi # Base paths PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" SOURCE_PNG="${PROJECT_ROOT}/common/assets/EX.png" SOURCE_SVG="${PROJECT_ROOT}/common/assets/EX.png" MOBILE_ASSETS_DIR="${PROJECT_ROOT}/shells/palace-mobile/assets" WEB_PUBLIC_DIR="${PROJECT_ROOT}/shells/shell-web/public" WEB_IMAGES_DIR="${WEB_PUBLIC_DIR}/images" # Verify source files exist for FILE in "$SOURCE_PNG" "$SOURCE_SVG"; do if [ ! -f "$FILE" ]; then echo "Error: Source file not found at $FILE" exit 1 fi done mkdir -p "${WEB_IMAGES_DIR}/icons" echo "Generating icons for all platforms..." # iOS App Icon (1024x1024px) IOS_SIZE=1024 IOS_LOGO_SIZE=$((IOS_SIZE * 82 / 100)) # 82% ratio per Apple guidelines magick -size ${IOS_SIZE}x${IOS_SIZE} xc:"#121736" "${MOBILE_ASSETS_DIR}/ios-icon-bg.png" magick "$SOURCE_PNG" -resize ${IOS_LOGO_SIZE}x${IOS_LOGO_SIZE} -colorspace sRGB "${MOBILE_ASSETS_DIR}/ios-logo-resized.png" magick composite -gravity center "${MOBILE_ASSETS_DIR}/ios-logo-resized.png" "${MOBILE_ASSETS_DIR}/ios-icon-bg.png" "${MOBILE_ASSETS_DIR}/icon.png" rm "${MOBILE_ASSETS_DIR}/ios-icon-bg.png" "${MOBILE_ASSETS_DIR}/ios-logo-resized.png" echo "Created iOS app icon: ${MOBILE_ASSETS_DIR}/icon.png" # Android Adaptive Icon (108x108dp) ANDROID_SIZE=432 # 108dp * 4 (xxxhdpi scale) ANDROID_SAFE_ZONE=264 # 66dp * 4 (safe zone) LOGO_SIZE=$((ANDROID_SAFE_ZONE * 95 / 100)) # 95% of safe zone magick -size ${ANDROID_SIZE}x${ANDROID_SIZE} xc:"#121736" "${MOBILE_ASSETS_DIR}/adaptive-icon-bg.png" magick "$SOURCE_PNG" -resize ${LOGO_SIZE}x${LOGO_SIZE} -colorspace sRGB "${MOBILE_ASSETS_DIR}/logo-resized.png" magick composite -gravity center "${MOBILE_ASSETS_DIR}/logo-resized.png" "${MOBILE_ASSETS_DIR}/adaptive-icon-bg.png" "${MOBILE_ASSETS_DIR}/adaptive-icon.png" # Android foreground layer (transparent) magick -size ${ANDROID_SIZE}x${ANDROID_SIZE} xc:none "${MOBILE_ASSETS_DIR}/transparent-bg.png" magick composite -gravity center "${MOBILE_ASSETS_DIR}/logo-resized.png" "${MOBILE_ASSETS_DIR}/transparent-bg.png" "${MOBILE_ASSETS_DIR}/ic_launcher_foreground.png" rm "${MOBILE_ASSETS_DIR}/adaptive-icon-bg.png" "${MOBILE_ASSETS_DIR}/logo-resized.png" "${MOBILE_ASSETS_DIR}/transparent-bg.png" echo "Created Android adaptive icon: ${MOBILE_ASSETS_DIR}/adaptive-icon.png" # Update app.json background color APP_JSON="${PROJECT_ROOT}/shells/palace-mobile/app.json" if [ -f "$APP_JSON" ] && command -v jq &> /dev/null; then cp "$APP_JSON" "${APP_JSON}.bak" jq '.expo.android.adaptiveIcon.backgroundColor = "#121736"' "$APP_JSON" > "${APP_JSON}.tmp" && mv "${APP_JSON}.tmp" "$APP_JSON" echo "Updated app.json with dark background color" fi # Mobile favicon magick "$SOURCE_PNG" -resize 64x64 "${MOBILE_ASSETS_DIR}/favicon.png" echo "Created mobile favicon: ${MOBILE_ASSETS_DIR}/favicon.png" # Splash Icon SPLASH_SIZE=512 SPLASH_LOGO_SIZE=$((SPLASH_SIZE * 70 / 100)) # 70% standard ratio magick -size ${SPLASH_SIZE}x${SPLASH_SIZE} xc:"#121736" "${MOBILE_ASSETS_DIR}/splash-bg.png" magick "$SOURCE_PNG" -resize ${SPLASH_LOGO_SIZE}x${SPLASH_LOGO_SIZE} "${MOBILE_ASSETS_DIR}/splash-resized.png" magick composite -gravity center "${MOBILE_ASSETS_DIR}/splash-resized.png" "${MOBILE_ASSETS_DIR}/splash-bg.png" "${MOBILE_ASSETS_DIR}/splash-icon.png" rm "${MOBILE_ASSETS_DIR}/splash-bg.png" "${MOBILE_ASSETS_DIR}/splash-resized.png" echo "Created splash icon: ${MOBILE_ASSETS_DIR}/splash-icon.png" magick "$SOURCE_PNG" -resize 512x512 "${WEB_IMAGES_DIR}/favicon.png" echo "Created web favicon PNG: ${WEB_IMAGES_DIR}/favicon.png" SIZES=("512") for SIZE in "${SIZES[@]}"; do magick "$SOURCE_PNG" -resize "${SIZE}x${SIZE}" "${WEB_IMAGES_DIR}/icons/icon-${SIZE}.png" echo "Created web icon: ${WEB_IMAGES_DIR}/icons/icon-${SIZE}.png" done # Apple touch icon magick "$SOURCE_PNG" -resize 180x180 "${WEB_IMAGES_DIR}/apple-touch-icon.png" echo "Created Apple touch icon: ${WEB_IMAGES_DIR}/apple-touch-icon.png" # OG image magick "$SOURCE_PNG" -resize 1200x630 "${WEB_IMAGES_DIR}/bogam-og.png" echo "Created OG image: ${WEB_IMAGES_DIR}/bogam-og.png" echo "" echo "All icons have been generated successfully!" echo "" echo "Next steps:" echo "1. For web: Icons have been added and layout has been updated" echo "" echo "2. For mobile: The icons are already in the correct locations" echo " You need to rebuild the mobile app to see the changes:" echo " cd ${PROJECT_ROOT}/shells/palace-mobile" echo " npx expo prebuild --clean" echo " eas build --local -p android --profile preview"