magician

Library for cute image manipulation. Requires ImageMagick.

Magician

Library for easy image manipulation. Requires ImageMagick.

  1. Conversion from/to different formats
  2. Resizing
  3. Cropping
  4. Defining and executing custom processing on given image (filters, middleware)
  5. Defining presets
npm install magician --save
  • 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.

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 

Assuming the beginning of all code listings is:

var Image = require('magician');
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 
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 
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 
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 
var image = new Image('http://example.com/image.png');
image.format('jpg');
 
var downloadedImage = yield image.save();
// image downloaded, done 

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 

You can run tests by executing:

npm test

Magician is released under the MIT License.