Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Unifies node-png, node-jpeg and node-gif (for great good)
JavaScript
branch: master
Failed to load latest commit information.
lib get rid of SyncImage and SyncStack, merge .encodeSync() into Image an…
tests update sync examples (gets rid of SyncImage and SyncStack)
.gitignore
.npmignore added .npmignore and .gitignore
package.json v1.0.1 now
readme.txt get rid of SyncImage and SyncStack in readme. Update sync examples to…

readme.txt

This is a node.js module that unifies node-png, node-gif and node-jpeg modules.

It was written by Peteris Krumins (peter@catonmat.net).
His blog is at http://www.catonmat.net  --  good coders code, great reuse.

------------------------------------------------------------------------------

Overview
--------

Node-image module abstracts over node-png, node-gif and node-jpeg modules.
It exports `Image`, and `Stack` objects.

Use the `Image` object to encode individual images of a specific width and
height synchronously (blocking) and asynchronously.

Here is an example that encodes the images synchronously:

    var Image = require('image');

    var png = new Image('png').encodeSync(buffer, width, height);
    var gif = new Image('gif').encodeSync(buffer, widht, height);
    var jpeg = new Image('jpeg').encodeSync(buffer, width, height);


Use `.encode` function to do the same asynchronously. Pass it a callback with
two arguments:

    var Image = require('image');
    
    (new Image('png')).encode(buffer, width, height,
        function (data, error) {
            // 'data' contains the png image
        }
    );


The buffers must be of node's `Buffer` type and they must hold either RGB, BGR,
RGBA or BGRA values. `Image` object defaults to RGB. To use a differnet buffer
type, pass it as the 2nd argument to `Image's` constructor:

    var png = new Image('png', 'bgra').encodeSync(buffer, 800, 600);


The `Stack` object is used to create dynamic stacks of images in sync and async
manner.

What I mean by that is that you can push an image to position (x, y) = (20, 40)
and then push another image to position (x, y) = (1000, 2000), and the image
will grow dynamically. Here is hot to use it:

    var Stack = require('image').Stack;

    var pngStack = new Stack('png');
    pngStack.push(buffer, x, y, width, height);
    var png = pngStack.encodeSync();
    console.dir(png.dimensions()); // prints dynamic png's dimensions

And the same asynchronously:

    var Stack = require('image').Stack;

    var pngStack = new Stack('png');
    pngStack.push(buffer, x, y, width, height);
    pngStack.encode(function (data, dims, error) {
        // 'data' contains the png image and 'dims' contains its dynamic dimensions
    });


See tests/ directory for some examples, it comes with a BGR buffer for testing.
First unpack it:

    tar -xjf desktop.tar.bz2

Then run any of sync.js, async.js, sync-stack.js, async-stack.js examples.


Dependencies
------------

This module depends on:

    * node-png:  http://github.com/pkrumins/node-png
    * node-gif:  http://github.com/pkrumins/node-gif
    * node-jpeg: http://github.com/pkrumins/node-jpeg

Each of these modules comes with documentation. Follow the installation steps
to get them installed.

The steps for all the modules are all the same, run:

    node-waf configure build

in each module's directory.

------------------------------------------------------------------------------

Have fun producing images!


Sincerely,
Peteris Krumins
http://www.catonmat.net

Something went wrong with that request. Please try again.