cops

0.1.4 • Public • Published

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.

Package Sidebar

Install

npm i cops

Weekly Downloads

4

Version

0.1.4

License

BSD-2-Clause

Last publish

Collaborators

  • shawnbot