# scripts/generate_icons.sh #!/bin/bash # Argument 1: Path to magick executable MAGICK_BIN="$1" # Fallback if not provided if [ -z "$MAGICK_BIN" ]; then MAGICK_BIN="magick" fi # Assumes running from Project Root SOURCE="assets/icon_source.png" OUT_DIR="assets/icons" if [ ! -f "$SOURCE" ]; then echo "Error: Source image '$SOURCE' not found in $(pwd)" exit 1 fi # Verify magick works "$MAGICK_BIN" -version >/dev/null 2>&1 if [ $? -ne 0 ]; then echo "Error: ImageMagick tool '$MAGICK_BIN' not found or not working." exit 1 fi mkdir -p "$OUT_DIR" # macOS ICONSET="$OUT_DIR/icon.iconset" mkdir -p "$ICONSET" "$MAGICK_BIN" "$SOURCE" -scale 16x16 "$ICONSET/icon_16x16.png" "$MAGICK_BIN" "$SOURCE" -scale 32x32 "$ICONSET/icon_16x16@2x.png" "$MAGICK_BIN" "$SOURCE" -scale 32x32 "$ICONSET/icon_32x32.png" "$MAGICK_BIN" "$SOURCE" -scale 64x64 "$ICONSET/icon_32x32@2x.png" "$MAGICK_BIN" "$SOURCE" -scale 128x128 "$ICONSET/icon_128x128.png" "$MAGICK_BIN" "$SOURCE" -scale 256x256 "$ICONSET/icon_128x128@2x.png" "$MAGICK_BIN" "$SOURCE" -scale 256x256 "$ICONSET/icon_256x256.png" "$MAGICK_BIN" "$SOURCE" -scale 512x512 "$ICONSET/icon_256x256@2x.png" "$MAGICK_BIN" "$SOURCE" -scale 512x512 "$ICONSET/icon_512x512.png" "$MAGICK_BIN" "$SOURCE" -scale 1024x1024 "$ICONSET/icon_512x512@2x.png" iconutil -c icns "$ICONSET" -o "$OUT_DIR/app_icon.icns" rm -rf "$ICONSET" # Windows "$MAGICK_BIN" "$SOURCE" \ \( -clone 0 -scale 256x256 \) \ \( -clone 0 -scale 128x128 \) \ \( -clone 0 -scale 64x64 \) \ \( -clone 0 -scale 48x48 \) \ \( -clone 0 -scale 32x32 \) \ \( -clone 0 -scale 16x16 \) \ -delete 0 -alpha off -colors 256 "$OUT_DIR/app_icon.ico" # Android ANDROID_DIR="$OUT_DIR/android/res" mkdir -p "$ANDROID_DIR/mipmap-mdpi" "$MAGICK_BIN" "$SOURCE" -scale 48x48 "$ANDROID_DIR/mipmap-mdpi/ic_launcher.png" mkdir -p "$ANDROID_DIR/mipmap-hdpi" "$MAGICK_BIN" "$SOURCE" -scale 72x72 "$ANDROID_DIR/mipmap-hdpi/ic_launcher.png" mkdir -p "$ANDROID_DIR/mipmap-xhdpi" "$MAGICK_BIN" "$SOURCE" -scale 96x96 "$ANDROID_DIR/mipmap-xhdpi/ic_launcher.png" mkdir -p "$ANDROID_DIR/mipmap-xxhdpi" "$MAGICK_BIN" "$SOURCE" -scale 144x144 "$ANDROID_DIR/mipmap-xxhdpi/ic_launcher.png" mkdir -p "$ANDROID_DIR/mipmap-xxxhdpi" "$MAGICK_BIN" "$SOURCE" -scale 192x192 "$ANDROID_DIR/mipmap-xxxhdpi/ic_launcher.png" # iOS XCASSETS_DIR="$OUT_DIR/ios/Assets.xcassets" IOS_DIR="$XCASSETS_DIR/AppIcon.appiconset" mkdir -p "$IOS_DIR" cat > "$XCASSETS_DIR/Contents.json" < "$IOS_DIR/Contents.json" <