magician

0.3.1 • Public • Published

Magician

Library for easy image manipulation. Requires ImageMagick.

Circle CI

Features

  1. Conversion from/to different formats
  2. Resizing
  3. Cropping
  4. Defining and executing custom processing on given image (filters, middleware)
  5. Defining presets

Installation

npm install magician --save

Requirements

  • node v0.11.x (or newer)
  • imagemagick

If you are happy user of Mac, you can install ImageMagick using HomeBrew:

brew install imagemagick

or using ImageMagick Installer by CactusLab.

Getting Started

Simplest example of using Magician:

var Image = require('magician');
 
var image = new Image('/path/to/image.jpg');
image.format('jpg')
     .width(500)
     .height(300);
 
var newImage = yield image.save()
// newImage is an Image instance, which points to a newly created image

Guide

Assuming the beginning of all code listings is:

var Image = require('magician');

Conversion from/to different formats

var image = new Image('/tmp/image.png');
image.format('jpg');
 
var convertedImage = yield image.save();
// convertedImage is an Image instance that points to a converted image
// allows further processing without the need to create a new Image

Alternative way:

var image = new Image('/tmp/image.png');
 
var convertedImage = yield image.save('/tmp/output.jpg');
// convertedImage is an Image instance that points to a converted image
// allows further processing without the need to create a new Image

Resizing

var image = new Image('/tmp/image.png');
image.width(500)
     .height(300);
     
var resizedImage = yield image.save('/tmp/resized.png');
// resizedImage is an Image instance that points to a resized image
// allows further processing without the need to create a new Image

Alternative way:

var image = new Image('/tmp/image.png');
image.resize(500, 300);
 
var resizedImage = yield image.save('/tmp/resized.png');
// resizedImage is an Image instance that points to a resized image
// allows further processing without the need to create a new Image

Cropping

var image = new Image('/tmp/image.png');
image.crop(5, 5, 50, 50); // x, y, width, height
 
var croppedImage = yield image.save();
// croppedImage is an Image instance that points to a resized image
// allows further processing without the need to create a new Image

Defining custom processing

var image = new Image('/tmp/image.png');
image.use(function *(next) {
   this.set('-trim', '');
   
   yield next;
});
 
var trimmedImage = yield image.save('/tmp/output.png')
// done

Ability to set a URL as a source

var image = new Image('http://example.com/image.png');
image.format('jpg');
 
var downloadedImage = yield image.save();
// image downloaded, done

Defining presets

Presets stop repetition and provide a fast way to use all the needed methods and filters on different Image instances using one line:

Image.preset('mobile')
     .width(300)
     .height(240)
     .save();
 
var image = new Image('/tmp/image.png');
image.use('mobile')
 
var mobileImage = yield image.save();
// done

Tests

You can run tests by executing:

npm test

License

Magician is released under the MIT License.

Package Sidebar

Install

npm i magician

Weekly Downloads

19

Version

0.3.1

License

MIT

Last publish

Collaborators

  • vdemedes