#!/bin/bash # FunMC 图标生成脚本 (Linux/macOS) # 需要安装 ImageMagick 或使用 cargo tauri icon 命令 set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(dirname "$SCRIPT_DIR")" ICONS_DIR="$ROOT_DIR/client/icons" SVG_PATH="$ICONS_DIR/icon.svg" echo -e "\033[33mFunMC 图标生成脚本\033[0m" echo "===================" # 检查 SVG 源文件 if [ ! -f "$SVG_PATH" ]; then echo -e "\033[31m错误: 未找到 SVG 源文件: $SVG_PATH\033[0m" exit 1 fi # 方法 1: 使用 cargo tauri icon (推荐) echo -e "\n\033[36m尝试使用 cargo tauri icon...\033[0m" cd "$ROOT_DIR/client" if cargo tauri icon "$SVG_PATH" 2>/dev/null; then echo -e "\033[32m图标生成成功!\033[0m" else echo -e "\033[33mcargo tauri icon 失败,尝试使用 ImageMagick...\033[0m" # 方法 2: 使用 ImageMagick if command -v convert &> /dev/null; then echo "使用 ImageMagick 生成图标..." mkdir -p "$ICONS_DIR" # PNG 图标 convert -background none "$SVG_PATH" -resize 32x32 "$ICONS_DIR/32x32.png" convert -background none "$SVG_PATH" -resize 128x128 "$ICONS_DIR/128x128.png" convert -background none "$SVG_PATH" -resize 256x256 "$ICONS_DIR/128x128@2x.png" # ICO (Windows) convert -background none "$SVG_PATH" -resize 256x256 \ -define icon:auto-resize=256,128,96,64,48,32,16 \ "$ICONS_DIR/icon.ico" # ICNS (macOS) - 需要 png2icns 或 iconutil if command -v png2icns &> /dev/null; then convert -background none "$SVG_PATH" -resize 1024x1024 "$ICONS_DIR/icon_1024.png" png2icns "$ICONS_DIR/icon.icns" "$ICONS_DIR/icon_1024.png" rm "$ICONS_DIR/icon_1024.png" elif command -v iconutil &> /dev/null; then ICONSET_DIR="$ICONS_DIR/icon.iconset" mkdir -p "$ICONSET_DIR" for size in 16 32 64 128 256 512 1024; do convert -background none "$SVG_PATH" -resize ${size}x${size} "$ICONSET_DIR/icon_${size}x${size}.png" done # 生成 @2x 版本 convert -background none "$SVG_PATH" -resize 32x32 "$ICONSET_DIR/icon_16x16@2x.png" convert -background none "$SVG_PATH" -resize 64x64 "$ICONSET_DIR/icon_32x32@2x.png" convert -background none "$SVG_PATH" -resize 256x256 "$ICONSET_DIR/icon_128x128@2x.png" convert -background none "$SVG_PATH" -resize 512x512 "$ICONSET_DIR/icon_256x256@2x.png" convert -background none "$SVG_PATH" -resize 1024x1024 "$ICONSET_DIR/icon_512x512@2x.png" iconutil -c icns "$ICONSET_DIR" rm -rf "$ICONSET_DIR" else echo -e "\033[33m警告: 无法生成 .icns 文件 (需要 png2icns 或 iconutil)\033[0m" fi echo -e "\033[32m图标生成完成!\033[0m" else echo -e "\033[31m错误: 未找到 ImageMagick\033[0m" echo "请安装 ImageMagick 后重试:" echo " Ubuntu/Debian: sudo apt install imagemagick" echo " macOS: brew install imagemagick" echo " 或者使用: cargo install tauri-cli && cargo tauri icon" exit 1 fi fi echo -e "\n图标目录: $ICONS_DIR" ls -la "$ICONS_DIR"