imager-io v0.0.6
Imager for JavaScript
Features
Brute Force Image Optimization
Optimizes the compression using ML based metrics in a trial ’n error sorta manner.
This is a tool that can competitively optimize (e.g.) extremely noisy, high resolution images; at the expense of increased encoding time and CPU overhead. This is a tradeoff that should be suitable for over 90% of online content, where site performance matters.
It's pretty easy too.
$ npm install --save imager-ioUsing the JavaScript non-blocking API:
const {ImageBuffer} = require("imager-io");
ImageBuffer
.open("source-image.jpeg")
.then(buffer => buffer.opt())
.then(buffer => buffer.save("result.jpeg"))
.then(() => console.log("done"));Compression Benchmarks
source : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 39.00M (4 images)
kraken.io : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 24M
jpegmini.com : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 16M
compression.ai: ▇▇▇▇▇▇▇▇ 8.90M
imager : ▇▇▇▇ 4.20MSupported Input Image Formats
| Format | Decoding |
|---|---|
| PNG | All supported color types |
| JPEG | Baseline and progressive |
| GIF | Yes |
| BMP | Yes |
| ICO | Yes |
| TIFF | Baseline(no fax support) + LZW + PackBits |
| WebP | Lossy(Luma channel only) |
| PNM | PBM, PGM, PPM, standard PAM |
Essentially supports any image decodable by image-rs.
Supported Output Image Formats
These are your optimization targets (for lack of a better name). It’s a bit higher level, since e.g. rate control is automatically handled.
| Format | Encoding |
|---|---|
| JPEG | progressive |
Webpack
It’s possible and pretty easy to use Webpack and Imager already, here is an example.
Feedback, Requests, Bugs, Confusion & Performance Issues
Just use the GitHub issue tracker for this project.
Other Miscellaneous
Articles
Copyright 2019 Colbyn Wadman