This doc explains how to build and run the browser GUI, what features are available, and known limitations.
- Prereqs: Rust toolchain,
wasm-pack, and a static file server (or Vite). - Build WASM:
- cd
PixelateR/wasm wasm-pack build --target web --release
- cd
- Place the generated
pkg/inPixelateR/web/:cp -r pkg ../web/
- Rust server (recommended):
- Build:
cargo run -p pixelater_web_serve -- --root PixelateR/web --port 8080 - Open:
http://localhost:8080
- Build:
- Alternatives:
miniserve PixelateR/web -p 8080(aftercargo install miniserve)- Vite or any static server if you prefer a different dev setup
- Image: open an image, live preview with adjustable controls, export PNG.
- Palettes: Auto (count), Predefined, Custom (HEX swatches). Presets and Randomize.
- Dithering: none, naive, bayer, floyd, atkinson. Strength for Naive/Bayer.
- Filters: SVD toggle (native builds), CLAHE strength, HSV saturation/value multipliers.
- Edge overlay: enable, intensity, and color.
- Preview: workerized off-main-thread, progressive preview with adjustable scale.
- Video: open a file, play/pause/seek; preview processed frames. Export experimental WebM via MediaRecorder.
- Sequence: palette refit policy across frames, keyframe interval, scene sensitivity; simple histogram-based keyframe detection in preview.
- Webcam: start live camera, preview and capture frame to the image workflow.
- MediaRecorder export is real-time and browser-dependent. For precise control, a frame-accurate pipeline is planned.
- SVD is feature-gated for WASM; the WASM build uses a non-SVD path.
- Performance depends on preview scale and device; use a higher preview scale for faster updates.
- If
pixelater_wasm.jsfails to load, confirmweb/pkg/exists and is served at/pkg/. - If webcam fails, check browser permissions and HTTPS requirement on some platforms.
- For large videos, reduce preview scale or pause playback during export.