From 1fd7c0cb1fe8aed8f4391276c62fa3207e2094f1 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 26 Apr 2026 05:45:33 +0100 Subject: [PATCH] Refresh public docs for GUI release --- README.md | 64 ++++++++++++++++++++++++++++------------------------ docs/spec.md | 5 ++-- 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 776302f..9429f28 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,41 @@ # Repixelizer -Repixelizer is a standalone Python CLI for images that are doing a pixel art impression instead of actually respecting the grid. +Repixelizer is a Python tool for images that are doing a pixel art impression instead of actually respecting the grid. It is aimed at the annoying middle ground: sprites, emblems, and logos that look locally pixelated but fall apart the second you ask them to commit to one lattice like grown-ups. Instead of pretending this is a resize problem, Repixelizer treats it as lattice inference plus local structure preservation: infer the implied grid, choose real output cells, and snap them back onto a coherent pixel lattice while preserving the source's local adjacency patterns. -## Examples +## GUI First -Repixelizer was built to rescue fake pixel art, but it can also be used to generate pixel art directly from non-pixel source art when the shapes are clean and the local structure is doing something useful. +The web GUI is the main way to use this thing unless you enjoy raw flags for sport. -Rows show the source art, a plain Lanczos downscale, and the live `phase-field` solver. The bottom row also carries the tracked sword-tip closeup, because that tiny patch is one of the more honest tests of whether the machine is preserving structure instead of just faking confidence. +It gives you: -![Repixelizer example comparison](docs/readme-assets/badge-example-sheet.png) +- drag-and-drop input +- live pipeline feedback while lattice search, rerank, and solving run +- synchronized input/output inspection zoom for close comparison +- a built-in output editor for single-pixel cleanup with eyedropper and pencil tools -That is the pitch in one image: same mess, same ruler, one machine forced to prove it actually understands the grid. +Run it from the repo checkout: + +```powershell +.\scripts\run_gui.ps1 +``` + +If you want to bypass the PowerShell wrapper and call Python directly: + +```powershell +.\.venv\Scripts\python scripts\run_gui.py +``` + +If you want to support the official hosted deployment and help us scale the poor little server when people start leaning on it, join the [GameCult Patreon](https://www.patreon.com/GameCult). At `$10` per subscriber, the math gets a lot less tragic. + +## Example + +This closeup from the badge fixture is the whole pitch in miniature: same ugly source patch, same target grid, one output that finally quits bluffing. + +![Repixelizer badge closeup](docs/readme-assets/guard-right-crop-source-final.png) ## Current Status @@ -22,6 +43,7 @@ This repo is past the "pile of hopeful heuristics" stage and into "real machine, What exists now: +- a web GUI with drag-and-drop, live diagnostics, comparison tools, and pixel cleanup - lattice inference with CUDA support - a lean displacement-field optimizer in `src/repixelizer/phase_field.py` - automatic diagnostics, comparisons, and benchmark runs @@ -51,7 +73,13 @@ python -m venv .venv .venv\Scripts\python -m pip install -e .[dev] ``` -Run the optimizer: +Launch the GUI: + +```powershell +.\scripts\run_gui.ps1 +``` + +Run the optimizer from the CLI: ```powershell repixelize input.png --out output.png @@ -65,18 +93,6 @@ Run the optimizer plus baselines: repixelize compare input.png --out output.png --diagnostics-dir diagnostics ``` -Run the GUI from the repo checkout: - -```powershell -.\scripts\run_gui.ps1 -``` - -If you want to bypass the PowerShell wrapper and call Python directly: - -```powershell -.\.venv\Scripts\python scripts\run_gui.py -``` - ## Corpus And Benchmarks Prepare a local Creative Commons corpus: @@ -148,16 +164,6 @@ Run the focused test suite with: .venv\Scripts\python -m pytest -q ``` -## Regenerating README Assets - -The README images are generated from repo-tracked fixtures, not from random artifacts left lying around: - -```powershell -.venv\Scripts\python scripts\generate_readme_previews.py --vector-input tests\fixtures\real\ai-badge-vector.png --ai-input tests\fixtures\real\ai-badge-cleaned.png --out-sheet docs\readme-assets\badge-example-sheet.png --out-guard-crop docs\readme-assets\guard-right-crop-comparison.png --scratch-dir artifacts\readme-build --device auto -``` - -That regenerates the main README sheet, the standalone sword-guard closeup strip, and scratch outputs under `artifacts/readme-build/` so you can inspect the actual low-res results used to build the docs sample. - ## Diagnostic Closeups For docs or regression notes, you can generate reproducible source/output closeups from output-grid cell coordinates with: diff --git a/docs/spec.md b/docs/spec.md index dfdd5fd..79c6871 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -2,7 +2,7 @@ ## Summary -Repixelizer is a standalone Python CLI for converting "fake pixel art" into true grid-aligned pixel art. The target use cases are single-image icons, emblems, logos, and simple sprites, especially images that already resemble pixel art but fail to obey a consistent pixel lattice. +Repixelizer is a Python tool with a CLI and web GUI for converting "fake pixel art" into true grid-aligned pixel art. The target use cases are single-image icons, emblems, logos, and simple sprites, especially images that already resemble pixel art but fail to obey a consistent pixel lattice. The project exists because generated imagery often creates appealing pixel-like local patterns while violating the actual constraints of pixel art: - inconsistent subpixel alignment @@ -24,7 +24,7 @@ Repixelizer treats this as lattice inference plus reconstruction rather than a r - full sprite-sheet or animation consistency - manual painting or mask authoring as a required workflow -- a desktop GUI +- a native desktop app - generalized photo-to-pixel-art stylization - a learned model trained on a large dataset @@ -195,6 +195,5 @@ The tool is successful for v1 if it can: The design should leave room for: - manual region hints or lock zones - multi-frame consistency for sprite sheets -- GUI tooling - more advanced warping or lattice-field models - learned priors or ranking models for candidate outputs