- Table of Contents
- Download
- Overview
- Features
- Project Structure
- Getting Started
- Building the EXE
- API Reference
- License
下載 GIFConverter.zip,解壓縮後執行 GIFConverter.exe,瀏覽器會自動開啟操作介面。
不需要安裝 Python,也不需要另外安裝任何套件。
| 平台 | Windows 64 位元 |
| 壓縮檔 | 約 310 MB |
| 解壓後 | 約 540 MB(含內建 AI 模型與推論引擎) |
| 網路 | 內建 U2-Net 模型可離線使用;其他模型首次選用時自動下載 |
圖片全程在本機處理,不會上傳到任何伺服器。
GIF Converter 是一個像剪輯軟體的動畫去背工具,同時支援動圖逐幀處理與靜態圖單張去背。
介面是單一工作區:中間放大檢視目前這一幀,下方時間軸依每幀時長排列,右側是屬性面板。上方的拆解 / 去背 / 導出三個模式共用同一個畫面,切換時只換中間內容與面板,不會離開工作區。
動圖(.gif / 動態 .webp) 走完整流程:拆解挑影格 → AI 去背 → 導出 GIF、動態 WebP 或 Sprite Sheet(可複選)。 靜態圖(.png / .jpg / .bmp) 直接進入去背模式,不顯示時間軸,完成後下載透明背景 PNG。 Sprite Sheet 也當靜態圖開啟,在去背模式按「切割成動畫影格」,切成逐幀後就跟動圖走同一套流程。
-
✂️ 切割模式(Sprite Sheet)
- 開啟靜態圖時會自動偵測格子;偵測到 4 格以上會提示這可能是 Sprite Sheet。
- 自動偵測適用格子大小不一的 AI Sprite Sheet(有底色間隔的 Panel,或透明背景上的角色),角色旁分離的小物件(汗滴、Zzz)會歸到最近的那一格;規則網格則依列數 × 欄數等分。
- 框可以直接在圖上拖曳移動、拖曳角落調整大小、在空白處拖曳新增,選取後按 Delete 刪除;編號依位置由上而下、由左而右排列。
- 調一格、套用全部:調好一格的邊界後,可以把同樣的調整量套用到其他格(例如一次裁掉每格底下的編號)。每格從目前的位置調整,大小不一的格子也適用,已經手動修好的格子也會保留修正。
- 偵測會把格子外的編號、說明文字排除;角色描邊把格子從牆到牆切開(例如棉被邊緣)時,會自動接回同一格。
- 設定影格率後一鍵切割:所有格子放進同一尺寸(最大那格)的畫布、靠底部置中,空白處補上該格的邊緣色(透明圖則保持透明)。可以直接進入導出模式,或先進行對齊校正。
-
🎬 拆解模式
- 解析 GIF / WebP,時間軸依每幀
duration(ms)等比例排列,停頓較久的影格會比較寬。 - 點影格右上角的勾選框切換保留或略過,略過的影格會加上斜線;也可全選、全不選、反選。
- 鍵盤 ← → 切換影格、空白鍵 切換保留;播放時會自動跳過略過的影格。
- 任一幀都可以單獨導出 PNG,不必先去背(適合本來就是透明背景的 GIF)。
- 解析 GIF / WebP,時間軸依每幀
-
✨ 去背模式
- 六種模型可切換:
U2-Net(通用,已內建可離線使用)、IS-Net Anime(二次元專用,可避免服裝被挖空)、U2-Net Human Seg(人像肢體)、U2-Netp(輕量柔和)、Silueta(輪廓外框)、IS-Net General(高精細分割)。 - 可調整邊緣閥值、內部孔洞修補 (Post-Process Mask)、Alpha Matting 與前景門檻。
- 處理範圍可選已保留的全部影格,或只處理目前這一幀。
- 逐幀進度:處理中可看到已完成幾幀、哪一幀正在處理。
- 去背結果逐幀保存:之後補選影格時只會處理新增的那幾幀。
- 單幀手動微調:導出 PNG 到繪圖軟體修好後再替換回來,隨時可復原;畫布右下可切換原始/去背後對照。
- 模型下載失敗會說明原因並提供「改用 U2-Net」;個別影格失敗會在時間軸標紅,可只重試失敗的幀。
- 六種模型可切換:
-
🎯 對齊模式(Sprite Sheet)
- 自動找出每一幀的角色範圍(有透明就看 Alpha,否則看背景色),把角色的對齊點(底部、中心或頂部)放到同一個位置,消除 AI 圖常見的漂移與上下跳動。
- 縮放校正:依參考幀的角色高度(或寬度)縮放每一幀,但限制最大差異(預設 ±5%),避免蹲下、伸手的影格被誤放大。
- 畫布自動容納所有影格,可調整四周留白;洋蔥皮會疊上前一幀方便比對。
- 逐幀微調:X / Y 位移、手動縮放(50–150%)與水平翻轉(修正 AI 畫反方向的影格),也可以直接在畫面上拖曳。
- 支援復原 / 重做(Ctrl+Z、Ctrl+Shift+Z)與快捷鍵:WASD 移動(按住 Shift 一次 10 px)、+ / - 縮放、F 翻轉、空白鍵 播放、← → 切換影格。
- 對齊只記錄參數、不改動原圖:之後重新去背,進入對齊或導出時會自動重算;也可以關閉「導出時套用對齊」回到原樣。
-
🚀 導出模式(僅動圖)
- 畫布顯示輸出動畫預覽與 Sprite Sheet 版面預覽(含實際輸出尺寸)。
- 有去背過的影格時,每種格式都可以各自選擇用去背影格或原圖(例如 GIF 用原圖、Sprite Sheet 用去背),對齊後的位置兩者相同。
- 導出格式可複選,一次產出多種成品:
- GIF 動畫:自訂影格率 (FPS Override) 與 Loop 循環次數。
- 動態 WebP:自訂影格率、循環次數與無損壓縮(保留精準 Alpha 通道)。
- Sprite Sheet 精靈圖:自訂欄數、間距與背景透明度,並附 JSON Layout 座標數據。
gif_converter/
├── app.py # FastAPI 後端 API (拆解, rembg 去背, 合成導出)
├── launcher.py # 打包版進入點 (植入內建模型、選埠、開瀏覽器)
├── gif_converter.spec # PyInstaller 打包設定
├── build_exe.bat # 一鍵打包腳本
├── requirements.txt # 執行環境依賴
├── start.bat # 一鍵啟動腳本 (開發用)
├── create_sample_gif.py # 測試用 GIF 生成腳本
├── test_agent_api.py # API 自動化測試腳本
├── sample.gif # 範例測試 GIF 檔
├── README.md # 專案說明文件
└── static/
├── index.html # 嚮導式 Modern Web 介面
├── style.css # 現代暗黑科技風格 CSS
├── script.js # 前端控制邏輯與 API 溝通
├── slice.js # Sprite Sheet 切割模式
└── align.js # 對齊模式(Anchor、縮放校正、洋蔥皮)只是想使用工具的話,請直接前往 Download 下載免安裝版。以下是從原始碼執行的方式。
- Python Version: Python 3.10+(已在 Python 3.13 測試無誤)
-
取得專案:
git clone https://github.com/rowing195/GIF-Converter.git cd GIF-Converter -
安裝所需依賴套件:
pip install -r requirements.txt
-
啟動 FastAPI 後端服務器(預設 Port: 8008):
python app.py
或在 Windows 直接雙擊
start.bat即可一鍵啟動並開啟頁面。 -
開啟瀏覽器存取介面:
執行 API 端點自動化測試腳本:
python test_agent_api.py在 Windows 上執行:
build_exe.bat會產出 dist/GIFConverter/(資料夾版)與 dist/GIFConverter.zip(散布用)。
打包前請先執行過一次 AI 去背,讓 rembg 將 u2net.onnx 下載到 ~/.u2net——打包腳本會把該模型內建進成品,使其開箱即可離線使用。
打包設定針對 conda 環境做了兩項修正:補進
Library/bin中的 DLL,並將 MSVC 執行期替換為系統版本(conda 的 14.27 會導致 onnxruntime 的 DLL 初始化失敗)。
| Endpoint | Method | Description |
|---|---|---|
/api/decompose-gif |
POST |
上傳動圖或靜態圖,回傳逐幀 base64 數據、尺寸、每幀 duration (ms) 與 is_animated |
/api/u2net-rembg |
POST |
傳送影格至指定 AI 模型,回傳去背後的透明 PNG 影格。單幀失敗時會沿用原圖並標記 failed,同時回傳 failed_count |
/api/detect-panels |
POST |
傳入 Sprite Sheet 圖片,回傳偵測到的影格框 {x, y, w, h}(未排序) |
/api/slice-sheet |
POST |
依影格框切割 Sprite Sheet,統一畫布尺寸並靠底部置中,回傳格式與 /api/decompose-gif 的 frames 相同 |
/api/content-boxes |
POST |
傳入多張影格,回傳每張的角色範圍 box 與背景色 background(透明圖為 null),供對齊模式使用 |
/api/synthesize |
POST |
依 export_types 合成導出 GIF、動態 WebP 與 Sprite Sheet 精靈圖 |
/api/u2net-rembg 模型載入失敗時,detail 會回傳 {code, model, message},code 為下列其中一種:
| Code | 意義 |
|---|---|
model_download_failed |
模型尚未下載,且目前連不上網路 |
unknown_model |
模型名稱不存在 |
model_load_failed |
其他模型載入問題(例如檔案損毀) |
rembg_missing |
rembg 套件本身無法載入 |
前端一律要求瀏覽器重新驗證頁面與靜態檔(
Cache-Control: no-cache),避免升級後出現新頁面配舊樣式表。API 回應不受影響。
This project is open-source and free to use under the MIT License.