// the find
silvia-odwyer/photon
⚡ Rust/WebAssembly image processing library
Photon is a Rust image processing library that compiles to WebAssembly, letting you run the same image manipulation code natively, in the browser, or on Node. It wraps the Rust `image` crate with ~96 higher-level functions covering filters, convolutions, transforms, colour space adjustments, and effects. Aimed at developers who want image processing without pulling in a native binary dependency on the web.
The dual-target story is genuinely well-executed — one codebase, three deployment targets (native, browser WASM, Node WASM), and a Cloudflare Workers package maintained separately. The breadth of operations is solid: Sobel/Laplace convolutions, HSL/LCh colour space adjustments, blend modes, and Bayer dithering cover most use cases without needing a second library. The API is simple and procedural — you pass a `PhotonImage` to a function, it mutates it — which is easy to wrap in any framework. Actively maintained as of mid-2026 with real PRs landing (film grain, 3-way colour grading, halftoning).
Still at 0.3.2 with no roadmap to a 1.0, which matters if you're building anything that needs API stability. The WASM bundle passes raw pixel data through JS/WASM boundaries on every call, so it's fast for single operations but can get expensive in tight loops — there's no way to chain operations without round-tripping through JS. No async API, which is awkward for WASM usage in async-heavy frontend code. The test suite in `crate/src/tests.rs` and the 'tests in a headless web browser' item are explicitly listed as a To Do, so the WASM path has limited automated coverage.