Image inverter & filters
Invert colours, convert to grayscale, apply a black-and-white threshold or sepia, then fine-tune brightness, contrast and saturation before exporting.
Runs in your browserEvery computation happens in your browser — your data never leaves this device.
Images are processed locally in your browser and never uploaded
Pick an image first
Active filters: None
Pick some filters and export — the output size and file size show up here.
What this tool does
- Make a negative or an inverted print proof: invert the RGB of the whole image in one click, preview before and after, then export.
- Turn a color illustration into grayscale or a pure black-and-white threshold image — handy for stamps and cleaning up scans.
- Warm up a photo: adjustable sepia strength plus brightness, contrast and saturation gives an old-photo or vintage look.
- Fix an underexposed or washed-out asset by adjusting only brightness and contrast (leaving every other filter off) as a lightweight editor.
Example
Input
A single pixel [10, 20, 30, 255] with only "invert (negative)" enabled
Output
[245, 235, 225, 255]
Each channel is computed as 255 − value with alpha untouched, so 10 → 245, 20 → 235, 30 → 225. That is the real output of the pure pixel logic and can be reproduced from the command line; exporting a file uses the browser canvas and cannot be verified offline.
Frequently asked questions
Can I enable several filters at once, and in what order do they apply?
Yes. The order is fixed: invert → black-and-white threshold or grayscale → sepia → brightness → contrast → saturation. Order changes the result — inverting before thresholding is not the same as thresholding first — and the "active filters" list shows exactly which steps are contributing.
How is the threshold different from grayscale?
Grayscale converts each pixel to a luminance value (Rec.709 weights) and keeps 256 levels of gray. The threshold keeps only pure black or pure white: brighter than the threshold becomes white, darker becomes black. The default is 128; lowering it pushes more pixels to white, which helps faint text pop out.
What do brightness, contrast and saturation mean numerically?
All three run from -100 to 100 and follow CSS filter semantics: brightness(1 + v/100), contrast(1 + v/100), saturate(1 + v/100). So -100 brightness is fully black, -100 saturation is fully gray, and +100 doubles the effect.
Should I export JPEG or PNG?
Inversion, grayscale and thresholding do not create new transparent pixels, so JPEG gives you a smaller file. If the source has an alpha channel you want to keep, choose PNG. The quality slider only affects JPEG output — PNG is lossless.
Are my images uploaded?
No. Pixels are read into a Uint8ClampedArray through the canvas, filtered in place and written back for export. There is no upload endpoint anywhere in the page.
Keywords:图片反相反色负片invert imagegrayscale黑白阈值sepia亮度对比度饱和度图片滤镜