cops
v0.1.4
Published
Composable image operations using node-canvas
Downloads
11
Readme
node-cops
Original photo by Quinn Dombrowski. Sorry.
Cops is an image manipulation tool belt for Node.js using a Cairo-backed Canvas implementation. The goal is to make common image operations such as resizing, compositing, cropping, and creating text overlays as simple and friendly as possible.
A note on performance: I've made every attempt to keep I/O buffered and asynchronous whenever possible, but because node-canvas currently provides no good way to create an Image from a Buffer, reading images blocks the thread. You will probably experience hiccups when loading large images.
Installation
Install cops with npm:
$ npm install cops
Usage
The cops
module exposes both classes and asynchronous
helpers for specific tasks. Check out the examples below, or refer to the API documentation for more info.
Resize an image
var cops = require("cops"),
shrink = cops.resize("50%");
cops.read("big.png", function(error, canvas) {
shrink(canvas, function(error, canvas) {
cops.write("small.png", canvas, function(error) {
// we're done here
});
});
});
Cops operations are designed to work with async.waterfall, each producing a Canvas instance for the next operation:
var cops = require("cops"),
async = require("async");
async.waterfall([
cops.read("big.png"),
cops.resize({width: 200, height: 200}),
cops.write("small.png")
], function(error, canvas) {
// mic drop
});
Command Line Utility
The cops
CLI gives you some nice, node-y tools:
# resize images
$ cops resize big.jpg 50% small.jpg
$ cat big.jpg | cops resize - 50% > small.jpg
# compose images
$ cops compose --gravity southeast photo.jpg watermark.png
Run cops --help
for more information.