# SpriteTool - Game Developer Tool Suite

[English Version](./README_EN.md) | [中文版](./README.md)

一個功能強大的遊戲開發工具套件，提供 Sprite 和圖片編輯的完整解決方案。

## 🎯 功能概述

SpriteTool 是一個整合式的 Web 應用程式，集合了四個專業級工具於一身：

### 📏 Grid Tool（網格工具）
用於在圖片上定義規則的網格區域並進行批量選取。

**功能特性：**
- 根據行列數自動生成網格（如 64×95 格子）
- 支援拖拽平移和滾輪縮放
- Cmd+點擊選取任意矩形區域
- 實時計算選中的總格數
- 以 JSON 格式導出或編輯區域定義
- 支援撤銷和清除操作
- 批量導出為單張 PNG 圖片

**使用場景：** Tilemap 製作、Sprite Sheet 分割、地圖編輯

---

### 🎯 Sprite Picker（精靈選取器）
從複雜的 Sprite Sheet 中快速選取和提取個別 Sprite。

**功能特性：**
- 自由繪製選取框（支援任意大小和位置）
- 統一設定 Sprite 尺寸（寬高設定）
- 設定導出時的列數，自動排列
- 即時預覽已選取的 Sprite
- 點擊預覽圖移除不需要的 Sprite
- 導出為優化的 PNG 圖片

**使用場景：** 角色動畫分解、道具提取、UI 圖片整理

---

### ✨ Shiny Monster Maker（色違製作工具）
使用 HSV 色彩空間進行專業級色違調整。

**功能特性：**
- **Hue Shift（色調）** - 0~180° 旋轉色盤
- **Saturation（飽和度）** - 0~2 倍率調整
- **Brightness（亮度）** - 0~2 倍率調整
- **Saturation Mask（飽和度過濾）** - 保護灰色/黑色像素
- 實時預覽效果
- 支援多格式圖片輸入
- 一鍵下載成品

**使用場景：** 色違製作、角色皮膚調整、主題變色

---

### 🔄 Sprite Flipper（精靈翻轉工具）
快速對 Sprite Sheet 中的每個動作格進行水平翻轉（左右鏡像）。

**功能特性：**
- 根據設定的行列數精確分割格子
- 批量水平翻轉所有 Cell
- 支援即時原圖與結果預覽
- 保持 Alpha 透明頻道
- 一鍵下載翻轉後的完整 Sprite Sheet

**使用場景：** 動畫鏡像製作、Tilemap 對稱變體生成、角色動作調整

---

## 🚀 快速開始

### 環境需求
- Python 3.8+
- FastAPI
- Pillow (PIL)
- OpenCV (cv2)
- Uvicorn
- Starlette

### 安裝依賴

```bash
pip install fastapi uvicorn pillow opencv-python starlette
```

### 運行應用

```bash
python tool.py
```

應用將啟動在 `http://localhost:8000`

訪問首頁查看所有可用工具，或直接訪問：
- **Grid Tool**: `http://localhost:8000/grid/`
- **Sprite Picker**: `http://localhost:8000/picker/`
- **Shiny Maker**: `http://localhost:8000/shiny/`
- **Sprite Flipper**: `http://localhost:8000/flipper/`

---

## 📂 項目結構

```
SpriteTool/
├── tool.py                          # 主應用入口（FastAPI 聚合）
├── sprite_tool_fullstack.py         # Grid Tool 子應用
├── sprite_webtool.py                # Sprite Picker 子應用
├── shiny_maker.py                   # Shiny Monster Maker 子應用
├── rotate_webtool.py                # Sprite Flipper 子應用
├── rotate.py                        # Flipper 核心處理邏輯
├── output/                          # Grid Tool 導出目錄
├── shiny_output/                    # Shiny Maker 導出目錄
└── README.md                        # 本文件
```

---

## 🎮 使用指南

### Grid Tool 工作流

1. **上傳圖片** - 選擇要切割的 Sprite Sheet
2. **設定網格** - 輸入行列數（如 64×95）
3. **選取區域**
   - 拖拽平移圖片
   - Cmd+點擊選取矩形區域
   - 或在下方 JSON 編輯器直接修改座標
4. **導出** - 設定輸出的列數、名稱後點擊 Export

### Sprite Picker 工作流

1. **上傳 Sheet** - 選擇包含多個 Sprite 的圖片
2. **調整設定**
   - 設定 Sprite 的統一寬高
   - 設定導出時每行的列數
3. **選取 Sprite** - 在畫布上繪製框選要提取的 Sprite
4. **檢查預覽** - 查看左側的縮略圖預覽
5. **移除錯誤** - 點擊預覽圖移除不需要的 Sprite
6. **導出** - 輸入檔名後點擊 Export Image

### Shiny Maker 工作流

1. **上傳原始圖片** - 選擇要變色的圖片
2. **調整參數**
   - 拖動 **Hue Shift** 滑桿改變色調
   - 調整 **Saturation** 改變飽和度
   - 調整 **Brightness** 改變亮度
   - 設定 **Saturation Mask** 保護中性色
3. **實時預覽** - 右側即時顯示效果
4. **下載** - 滿意後點擊「下載」按鈕

### Sprite Flipper 工作流

1. **上傳圖片** - 選擇要翻轉的 Sprite Sheet
2. **設定分割** - 輸入圖片對應的行列數（Cols/Rows）
3. **執行翻轉** - 點擊執行按鈕，系統將自動處理每個格子
4. **檢查結果** - 下方會顯示翻轉後的預覽圖
5. **下載** - 點擊下載按鈕取得成品

---

## 🛠️ 技術架構

### 核心技術棧
- **後端框架**: FastAPI（高性能異步 Web 框架）
- **前端框架**: Tailwind CSS（無頭 CSS 框架）
- **圖像處理**: Pillow + OpenCV
- **顏色空間**: HSV 色彩轉換和処理

### 系統設計

**工具入口（tool.py）**
- 統一的導覽欄中間件
- 子應用挂載機制
- 首頁信息展示

**圖像處理管線**
- 前端拖拽/點擊交互 → 座標發送
- 後端 Python 圖像運算 → 二進制輸出
- 實時預覽 + 批量導出

---

## 📝 API 端點

### Grid Tool
- `GET /grid/` - 首頁
- `POST /grid/upload` - 上傳圖片並生成預覽

### Sprite Picker  
- `GET /picker/` - 首頁
- `POST /picker/upload` - 上傳圖片
- `POST /picker/export` - 導出選中的 Sprite

### Shiny Maker
- `GET /shiny/` - 首頁
- `POST /shiny/process` - 處理色違調整
- `GET /shiny/download` - 下載成品

### Sprite Flipper
- `GET /flipper/` - 首頁
- `POST /flipper/flip` - 執行精靈翻轉處理

---

## 🎨 UI/UX 特性

- **深色主題** - 護眼的深灰配色
- **響應式設計** - 適配桌面和平板
- **即時預覽** - 無延遲的視覺反饋
- **拖拽交互** - 直觀的圖像操作
- **觸控友善** - 精確的像素級選取

---

## 📊 常見用途

### 獨立遊戲開發
- Sprite Sheet 的切割和優化
- 怪物/角色的色違製作
- 動畫幀序列的組織

### 美術工作流
- Tilemap 素材準備
- UI 圖集組織
- 角色皮膚變體製作

### 資源優化
- Sprite 批量提取
- 統一尺寸規範化
- 減少資源檔案數量

---

## 🔧 故障排除

**問題：圖片無法上傳**
- 檢查圖片格式（支援 PNG, JPG, GIF）
- 確認檔案大小合理

**問題：導出後圖片模糊**
- 確認原始圖片是像素藝術格式
- 檢查瀏覽器縮放比例

**問題：顏色調整效果不理想**
- 調整飽和度過濾值
- 嘗試不同的 Hue Shift 角度

---

## 📄 許可證

開源項目，自由使用和修改。

---

## 👤 貢獻

歡迎提交 Issue 和 Pull Request！

---

**最後更新**: 2026 年 5 月  
**版本**: 1.1.0
