Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shawnbot/node-cops
An image manipulation tool belt for Node.js
https://github.com/shawnbot/node-cops
Last synced: about 2 months ago
JSON representation
An image manipulation tool belt for Node.js
- Host: GitHub
- URL: https://github.com/shawnbot/node-cops
- Owner: shawnbot
- Created: 2014-07-17T20:35:08.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2014-07-20T00:14:39.000Z (over 10 years ago)
- Last Synced: 2024-11-02T04:08:04.689Z (2 months ago)
- Language: JavaScript
- Homepage:
- Size: 715 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# node-cops
> ![](https://raw.githubusercontent.com/shawnbot/node-cops/master/assets/node-cops.jpg)
>
> Original photo by [Quinn Dombrowski](https://www.flickr.com/photos/quinnanya/6668359047/). Sorry.Cops is an image manipulation tool belt for Node.js using a
[Cairo](http://cairographics.org/)-backed
[Canvas implementation](https://github.com/Automattic/node-canvas). 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](https://github.com/Automattic/node-canvas/issues/413),
*reading images blocks the thread*. You will probably experience hiccups when loading
large images.## Installation
Install cops with [npm](http://npmjs.org):```sh
$ 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](https://github.com/shawnbot/node-cops/wiki/API) for more info.### Resize an image
```js
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](https://github.com/caolan/async#waterfall),
each producing a Canvas instance for the next operation:```js
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:```sh
# 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.