ditherjs
Version:
Image dithering library
85 lines (54 loc) • 2.53 kB
Markdown
# ditherJS
[](http://creativecommons.org/licenses/by-sa/4.0/)
[](https://travis-ci.org/dpiccone/ditherjs)
[](https://coveralls.io/github/dpiccone/ditherjs?branch=master)
A javascript library which dithers an image using a fixed palette.
Run `npm run demo:client` or `npm run demo:sever` to see it in action.
## Installation and dependencies
```sh
$ npm install ditherjs --save
```
Both client and server are exposed as commonJS modules to be used with webpack or browserify.
The client-side version is also published with an UMD compatible wrapper and a jQuery plugin, those versions are in `./dist`
The server-side version needs [node-canvas](https://github.com/Automattic/node-canvas) installed as a peer dependency to work, this is also needed to run run the tests during development.
```sh
$ npm install ditherjs canvas --save
```
## Usage and options
Any DitherJS instance exposes a `dither(target, [options])` method which accepts a *selector* a *Node<img>* or a *buffer* as a target and an optional options object.
The options can be passed directly to the method or directly in the constructor.
```javascript
var options = {
"step": 1, // The step for the pixel quantization n = 1,2,3...
"palette": defaultPalette, // an array of colors as rgb arrays
"algorithm": "ordered" // one of ["ordered", "diffusion", "atkinson"]
};
```
A default palette is provided which is CGA Palette 1

The palette structure is as an array of rgb colors `[[r,g,b]..]`
### Client
```javascript
var DitherJS = require('ditherjs');
var ditherjs = new DitherJS([,options]);
ditherjs.dither(selector,[,options]); // should target <img> elements
```
as a jQuery plugin
```javascript
$('.dither').ditherJS(options);
```
or directly on the element
```html
<img src="..." onload="ditherjs.dither(this)" />
```
## Server
```javascript
var DitherJS = require('ditherjs/server');
var ditherjs = new DitherJS([,options]);
// Get a buffer that can be loaded into a canvas
var buffer = fs.readFileSync('./myBeautifulFile.jpg|gif|png');
ditherjs.dither(buffer,[,options]);
```
### Testimonials
Useful as a comb to a bald man. -Anon
author 2014 [Daniele Piccone](http://www.danielepiccone.com)