Pixel image and frame sequence toolset: video frame extraction, GIF processing, image matting, sprite sheet composition, and more.
- Global shortcuts (home / in-feature): On home, C opens GIF↔Frames, V Pixel Image Processing, G Gemini watermark removal, R RoninPro → Custom Scale, N RoninPro → Sheet Pro (split + sprite sheet adjust); from any main feature, B returns home (ignored when an input/textarea/contenteditable is focused or with Ctrl/Cmd/Alt). See Web Shortcuts below.
- RoninPro: Custom scale, custom slice, unify size, and more; NFT gate is controlled by
RONIN_PRO_REQUIRE_NFTinfrontend/src/config/features.ts(default: no NFT required); R deep-links to Custom Scale; N deep-links to Sheet Pro. - Sheet Pro (RoninPro, shortcut N): On uniform grid, N×M only defines how the full image is split (changing it re-splits). The preview column count only controls frames per row and the merge/export layout—it does not re-split the source. Also: grid split, transparency-gap split, optional pre-process, per-frame nudge and edge crop, merge, ZIP / GIF export.
- Home layout: RoninPro row is placed above Seedance watermark removal and asset/source sharing.
- GIF ↔ Frames: Default tab is multi-image merge to single; default input mode is split single image (grid split then merge).
- Sprite Sheet Adjust: Animation preview uses arrow buttons; A / D step through selected frames (when not typing); recombine exports sheet after per-frame offsets.
- Control test scenes: Top-down and Arcade demo scenes on the first home row.
- Video to Frames: Upload video, extract frames, rembg matte, generate Sprite Sheet
- GIF ↔ Frames: GIF extraction, frames to GIF, multi-image merge (default tab), split one image by grid then merge, single image split, simple stitch (vertical/horizontal)
- Sprite Sheet: Split frame images / Combine to GIF
- Sprite Sheet Adjust: Split preview, frame selection, animation preview (Ronin login required), frame navigation (buttons + A/D), recombine export after offsets
- Pixel Image Processing: Dual entry
- Standard: Scale, inner stroke, crop, matte (green/blue screen)
- RPGMAKER One-Click: Remove Gemini watermark → contiguous matte from top-left (tolerance 80/feather 5) → 144×144 hard scale → RPGMAKER output
- RPGMAKER V2 One-Click (5 rows): Watermark → 256×256 hard scale → contiguous matte from first pixel → crop 64px right + 64px transparent bottom → rows 3–4 shifted down 64px, row 3 mirrored from row 2 → 5×3 grid, trim 8px per side per cell, merge → 144×240
- RPGMAKER V2 One-Click (4 rows): Same pipeline, then crop 48px from bottom → 144×192
- One-Image-All-Actions: Remove Gemini watermark → 256×256 hard scale → top-left matte (tolerance 80) → crop 4px right/bottom → 252×252
- RPGMAKER Generate: 3-row split, row 2 flip copy, row 3 shift 48px
- Fine Edit: Brush, eraser, super eraser (connected region + tolerance), toggle bg color, undo (Ctrl+Z), zoom, pan
- Standard: Scale, inner stroke, crop, matte (green/blue screen)
- Chroma Key: Green/blue screen removal, spill suppression, edge smooth
- Pixelate: Convert to pixel block style
- Expand & Shrink: N×M grid crop and merge
- Gemini Watermark Removal: Remove visible watermark from Gemini-generated images
- nanobanana RPG Maker Character: Link to Gemini for RPG Maker character assets
- nanobanana Pixel Scene & Standing Illustration: Link to Gemini
- nanob Full Character Action Test: V4Tx3 continuous actions, etc.
- RoninPro (Ronin login): Custom Scale, Custom Slice, Unify Size, Sheet Pro, etc. NFT requirement: see
frontend/src/config/features.ts. In Sheet Pro, the split grid (N×M) and the preview/composite layout are separate: N/M re-cut the image; changing preview columns only reflows.
- Top-down Test Scene, Arcade Test Scene: Control and layering experiments (not the main production pipeline).
- Seedance 2.0 Video Watermark Removal: Requires local backend. Remove "AI生成" from Seedance/Jiemeng videos
- Assets & Game Source Share: 01-Art assets, Godot scripts, finished projects (incl. AI Pixel Shop K)
- V: On the home screen, open Pixel Image Processing (entry picker; same focus/modifier rules as below).
- R: On the home screen, open RoninPro → Custom Scale (Ronin login required; NFT gate applies if enabled; same focus/modifier rules as below).
- N: On the home screen, open RoninPro → Sheet Pro (split + sprite sheet adjust; same login/NFT rules as R).
- G: On the home screen, open Gemini Watermark Removal (same focus/modifier rules as below).
- C: On the home screen, open GIF ↔ Frames (same as the card; same focus/modifier rules as below).
- B: Return to home from any main feature. Ignored while focus is in an input, textarea, or contenteditable; also ignored with Ctrl / Cmd / Alt (avoids browser shortcuts). The video workflow resets the upload step; the image module returns to its entry selection screen.
- Python 3.11+
- Node.js 18+
- Redis
- FFmpeg (in PATH)
- (Optional) Docker + Docker Compose
# Backend
pip install -r backend/requirements.txt
# Frontend
cd frontend && npm install# Windows: Download Redis or use Docker
docker run -d -p 6379:6379 redis:7-alpine
# Or install and start Redis locally# Terminal 1: API
cd pixelwork
set PYTHONPATH=%CD%
python -m uvicorn backend.app.main:app --reload --port 8000
# Terminal 2: Worker
set PYTHONPATH=%CD%
rq worker pixelwork --url redis://localhost:6379/0
# Terminal 3: Frontend
cd frontend && npm run devThe frontend uses chroma key for "Video to Frames" and does not require the model. For backend + Worker server-side matting, U2Net (~176MB) will be downloaded on first run.
The project uses GitHub Actions. Pushing to main triggers build and deploy to GitHub Pages.
First-time setup: Enable Pages
- Open https://github.com/systemchester/FrameRonin/settings/pages
- Under Build and deployment, set Source to GitHub Actions
- Save. Future pushes to
mainwill auto-deploy
URL: https://systemchester.github.io/FrameRonin/
Note: Current deployment is frontend-only. GIF split/combine, pixel image processing (incl. fine edit), chroma key, simple stitch, Sprite Sheet, RPGMAKER one-click, and video-to-frames are all usable.
docker-compose up -d- Frontend: http://localhost:5173
- API: http://localhost:8000
- Redis: localhost:6379
| Method | Path | Description |
|---|---|---|
| POST | /jobs | Create task (upload video) |
| GET | /jobs/{id} | Get task status |
| GET | /jobs/{id}/result?format=png|zip | Download result |
| GET | /jobs/{id}/index | Download index JSON |
| DELETE | /jobs/{id} | Delete task |
{
"version": "1.0",
"frame_size": {"w": 256, "h": 256},
"sheet_size": {"w": 3072, "h": 2048},
"frames": [
{"i": 0, "x": 0, "y": 0, "w": 256, "h": 256, "t": 0.000},
{"i": 1, "x": 256, "y": 0, "w": 256, "h": 256, "t": 0.083}
]
}- Bilibili: https://space.bilibili.com/285760
| Doc | Description |
|---|---|
| DEV_DOC_video2timesheet.md | Video→frames / Sprite Sheet product & API design |
| DEV_PLAN_extensions.md | Extension plan & V3 shipped checklist |
| DEPLOY.md | Push, CNB/EdgeOne, deploy notes |
| frontend/README.md | Frontend project notes |
