# EG 图标准备指南

构建安装程序需要准备应用程序图标，本指南说明如何创建和放置图标文件。

---

## 📋 所需图标

| 平台 | 文件名 | 格式 | 推荐尺寸 | 用途 |
|------|--------|------|---------|------|
| Windows | `icons/app.ico` | ICO | 256x256 (多尺寸) | 可执行文件和安装程序图标 |
| Linux | `icons/app.png` | PNG | 256x256 | AppImage 和桌面图标 |

---

## 🎨 图标要求

### Windows ICO 文件

ICO 文件可以包含多个尺寸的图标：
- **必须包含**: 256x256 (32位)
- **推荐包含**: 48x48, 32x32, 16x16
- **可选**: 128x128, 64x64

**格式要求**:
- 支持透明背景 (32位，带 Alpha 通道)
- 大图标使用 PNG 压缩
- 小图标使用 BMP 格式

### Linux PNG 文件

- **尺寸**: 256x256 像素
- **格式**: PNG，带透明通道
- **色彩**: RGBA (32位)

---

## 🔧 创建图标的方法

### 方法 1: 使用现有图片转换

如果你有 PNG/JPG 格式的 logo：

**Windows (ICO)**:
```bash
# 使用 ImageMagick
convert logo.png -define icon:auto-resize=256,128,64,48,32,16 icons/app.ico

# 或在线工具
# https://convertio.co/png-ico/
# https://icoconvert.com/
```

**Linux (PNG)**:
```bash
# 直接复制或调整大小
cp logo.png icons/app.png

# 或使用 ImageMagick 调整
convert logo.png -resize 256x256 icons/app.png
```

### 方法 2: 使用专业工具设计

| 工具 | 平台 | 类型 | 链接 |
|------|------|------|------|
| Adobe Illustrator | Win/Mac | 专业矢量 | - |
| Figma | Web | 免费在线 | figma.com |
| Canva | Web | 免费在线 | canva.com |
| GIMP | Win/Mac/Linux | 免费开源 | gimp.org |
| Inkscape | Win/Mac/Linux | 免费矢量 | inkscape.org |

### 方法 3: 使用 Python 脚本生成

如果你有源图片，可以使用 Python 生成：

```python
#!/usr/bin/env python3
"""图标生成脚本"""

from PIL import Image
import os

# 源图片路径
source_image = "source_logo.png"  # 你的源图片
output_dir = "icons"

# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)

# 打开源图片
img = Image.open(source_image)

# 转换为 RGBA 模式 (确保透明通道)
if img.mode != 'RGBA':
    img = img.convert('RGBA')

# 生成 Windows ICO (多尺寸)
icon_sizes = [(16, 16), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)]
ico_images = []

for size in icon_sizes:
    resized = img.resize(size, Image.Resampling.LANCZOS)
    ico_images.append(resized)

# 保存 ICO (第一个图像作为根，其余作为子图标)
ico_images[0].save(
    os.path.join(output_dir, "app.ico"),
    format='ICO',
    sizes=[(i.width, i.height) for i in ico_images],
    append_images=ico_images[1:]
)

print(f"✓ 生成: {output_dir}/app.ico")

# 生成 Linux PNG (256x256)
png_size = (256, 256)
png_img = img.resize(png_size, Image.Resampling.LANCZOS)
png_img.save(os.path.join(output_dir, "app.png"), format='PNG')

print(f"✓ 生成: {output_dir}/app.png")

print("\n图标生成完成！")
```

**使用方法**:
```bash
# 安装依赖
pip install Pillow

# 运行脚本
python generate_icons.py
```

### 方法 4: 从项目中提取

如果项目中有现有图标资源：

```bash
# 查找项目中的图标文件
find . -name "*.ico" -o -name "*.png" | grep -i icon

# 复制到正确位置
cp 找到的图标文件 icons/app.ico
cp 找到的图标文件 icons/app.png
```

---

## 📁 目录结构

放置图标后，项目结构应为：

```
EG/
├── icons/
│   ├── app.ico          # Windows 图标 (必需)
│   ├── app.png          # Linux 图标 (必需)
│   └── ...              # 其他图标资源
├── build_scripts/
├── ...
```

---

## ✅ 验证图标

### Windows

```powershell
# 检查文件存在
Test-Path icons/app.ico

# 查看 ICO 内容 (需要工具)
# 使用 Resource Hacker: http://www.angusj.com/resourcehacker/
```

### Linux

```bash
# 检查文件存在
ls -la icons/app.png

# 查看图片信息
file icons/app.png
identify icons/app.png  # 需要 ImageMagick

# 预览
xdg-open icons/app.png
```

---

## 🚀 测试图标

构建完成后，验证图标是否正确显示：

### Windows

1. **可执行文件图标**:
   ```powershell
   # 检查 dist/EG_1.0.0/EG.exe 的图标
   # 在资源管理器中查看，应该显示你的图标
   ```

2. **安装程序图标**:
   ```powershell
   # 检查 dist/EG_Setup_v1.0.0_x64.exe 的图标
   ```

### Linux

```bash
# 检查 AppImage 图标
./dist/EG-1.0.0-x86_64.AppImage --appimage-mount
ls squashfs-root/EG.png
```

---

## 🐛 常见问题

### 问题 1: ICO 文件无法识别

**症状**: Windows 显示默认图标

**解决**:
- 确保 ICO 包含 256x256 尺寸
- 使用专业工具重新生成
- 检查文件是否损坏

### 问题 2: Linux 图标不显示

**症状**: AppImage 使用默认图标

**解决**:
- 确认 `icons/app.png` 存在
- 检查文件权限: `chmod 644 icons/app.png`
- 确认 PNG 格式正确: `file icons/app.png`

### 问题 3: 图标模糊

**症状**: 图标显示模糊或锯齿

**解决**:
- 使用矢量源文件生成
- 确保包含多个尺寸
- 使用高质量缩放算法 (LANCZOS)

---

## 📦 快速开始

如果你没有现成的图标，可以先使用占位图标：

```bash
# Windows: 创建一个简单的 ICO
# 使用在线工具生成，或先跳过 (Nuitka 会使用默认图标)

# Linux: 创建一个简单的 PNG
python3 -c "
from PIL import Image
import os
os.makedirs('icons', exist_ok=True)
img = Image.new('RGBA', (256, 256), (100, 150, 255, 255))
img.save('icons/app.png')
print('Created placeholder icon')
"
```

**注意**: 发布前务必替换为正式图标！

---

## 🎨 设计建议

1. **简洁明了**: 小尺寸下依然可识别
2. **品牌一致性**: 与应用风格一致
3. **透明背景**: 适应不同主题
4. **测试多尺寸**: 确保 16x16 到 256x256 都清晰
5. **考虑暗色主题**: 在深色背景下也可见

---

**文档版本**: 1.0
