Image Processing in WebAssembly
Photon is a high-performance image processing library in WebAssembly that runs both natively and on the web.

Features
Photon outperforms even the fastest of libraries, and is powered with Rust, allowing for safe and secure image processing.
Web-Assembly Friendly
For web-based image processing, Photon is 4-10x faster than JS, leading to faster results, and less lag.
Read More
Over 90 functions
Photon provides functions for every domain of image processing.
Read More
Call WASM with JS
This library's WASM functions can be called via JS, allowing for zero-cost abstraction and faster development.
Read More
Features
Run on the web or natively.
Photon can be executed:
- In the browser via JS
- Node.JS
- Natively with Rust
Photon compiles to WebAssembly, which allows the execution of native-speed code in the browser and on Node.JS. This leads to high-performance image processing on the web and since Photon's core library is written in Rust, it promises security and safety.

Photon's core library is a Rust crate, available from Cargo.

Write code in JS without a single line of Rust.

JS code gets exported to WebAssembly.
Performance
Photon outperforms even the fastest of libraries, both natively and on the web.
For full benchmark results,check them out here.
Photon has greatly outperformed ImageMagick and the Python Imaging Library, as shown in the graph to the right, and is on par with libvips.
As for the web, the browser can take advantage of WebAssembly's near-native performance to deliver blazing-fast image processing on the client-side, thus sparing you the need to process images server-side.
Channel/Colour Manipulation
Photon provides low-level access to pixel and channel manipulation, as well as high-level functions for image correction, filtering, watermarking, and convolutions.

Image Resizing
Resize images at lightning-speeds.
High-performance image resizing with 5 different resizing algorithms to choose from, so that you can choose the algorithm most suited to your use case.
Image Correction
Adjust images by correcting brightness, saturation, hues, and more, all within various colour spaces. This gives full flexibility to work in many colour spaces, leading to improved results tailored to your image.


Enhance with Effects
Photon comes with a variety of built-in effects, including:
- Convolutions: Sobel filters, blurs, Laplace effects, edge detection, etc.,
- Monochrome effects: Duotoning, greyscaling of various forms, thresholding, sepia, averaging RGB values
- Filters: Over 30 pre-set filters available, incorporating various effects and transformations.
Blend Images
Functions include:
Blending:Blend images together using 10 different techniques.
Create new images from existing ones, or create new worlds from source images.
View The Demo
To see WebAssembly in action and all effects available, make sure to check out ourdemo , where you can test out the effects, view performance, and see if Photon is the right library for your website.

Get Started In Just 3 Lines of Code
You can transform an image in just 3 lines of code, either in JS or Rust, whichever your choice may be.

Compare WebAssembly versus JavaScript
To compare JavaScript vs WebAssembly, click on one of the buttons below to see the right-hand side image edited by either JavaScript or WebAssembly.
The time taken to edit the image will be displayed below.
JS time:
WASM time:

Got questions?
If you have any questions, want to chat about your potential use case, or want help in getting started with Photon, be sure to shoot me a message on Spectrum or Gitter.
