--- /dev/null
+# node-imagemagick
+
+[Imagemagick](http://www.imagemagick.org/) module for [Node](http://nodejs.org/).
+
+You can install this module using [npm](http://github.com/isaacs/npm):
+
+ npm install imagemagick
+
+Requires imagemagick CLI tools to be installed. There are numerous ways to install them. For instance, if you're on OS X you can use [Homebrew](http://mxcl.github.com/homebrew/): `brew install imagemagick`.
+
+## Example
+
+```javascript
+var im = require('imagemagick');
+im.readMetadata('kittens.jpg', function(err, metadata){
+ if (err) throw err;
+ console.log('Shot at '+metadata.exif.dateTimeOriginal);
+})
+// -> Shot at Tue, 06 Feb 2007 21:13:54 GMT
+```
+
+## API
+
+### convert.path
+
+Path to the `convert` program. Defaults to `"convert"`.
+
+### identify.path
+
+Path to the `identify` program. Defaults to `"identify"`.
+
+### identify(path, callback(err, features))
+
+Identify file at `path` and return an object `features`.
+
+Example:
+
+```javascript
+im.identify('kittens.jpg', function(err, features){
+ if (err) throw err;
+ console.log(features);
+ // { format: 'JPEG', width: 3904, height: 2622, depth: 8 }
+});
+```
+
+### identify(args, callback(err, output))
+
+Custom identification where `args` is an array of arguments. The result is returned as a raw string to `output`.
+
+Example:
+
+```javascript
+im.identify(['-format', '%wx%h', 'kittens.jpg'], function(err, output){
+ if (err) throw err;
+ console.log('dimension: '+output);
+ // dimension: 3904x2622
+});
+```
+
+### readMetadata(path, callback(err, metadata))
+
+Read metadata (i.e. exif) in `path` and return an object `metadata`. Modelled on top of `identify`.
+
+Example:
+
+```javascript
+im.readMetadata('kittens.jpg', function(err, metadata){
+ if (err) throw err;
+ console.log('Shot at '+metadata.exif.dateTimeOriginal);
+ // -> Shot at Tue, 06 Feb 2007 21:13:54 GMT
+});
+```
+
+### convert(args, callback(err, stdout, stderr))
+
+Raw interface to `convert` passing arguments in the array `args`.
+
+Example:
+
+```javascript
+im.convert(['kittens.jpg', '-resize', '25x120', 'kittens-small.jpg'],
+function(err, stdout){
+ if (err) throw err;
+ console.log('stdout:', stdout);
+});
+```
+
+### resize(options, callback(err, stdout, stderr))
+
+Convenience function for resizing an image, modelled on top of `convert`.
+
+The `options` argument have the following default values:
+
+```javascript
+{
+ srcPath: undefined,
+ srcData: null,
+ srcFormat: null,
+ dstPath: undefined,
+ quality: 0.8,
+ format: 'jpg',
+ progressive: false,
+ width: 0,
+ height: 0,
+ strip: true,
+ filter: 'Lagrange',
+ sharpening: 0.2,
+ customArgs: []
+}
+```
+
+srcPath, dstPath and (at least one of) width and height are required. The rest is optional.
+
+Example:
+
+```javascript
+im.resize({
+ srcPath: 'kittens.jpg',
+ dstPath: 'kittens-small.jpg',
+ width: 256
+}, function(err, stdout, stderr){
+ if (err) throw err;
+ console.log('resized kittens.jpg to fit within 256x256px');
+});
+```
+
+Example with stdin/stdout:
+
+```javascript
+var fs = require('fs');
+im.resize({
+ srcData: fs.readFileSync('kittens.jpg', 'binary'),
+ width: 256
+}, function(err, stdout, stderr){
+ if (err) throw err
+ fs.writeFileSync('kittens-resized.jpg', stdout, 'binary');
+ console.log('resized kittens.jpg to fit within 256x256px')
+});
+```
+
+### crop(options, callback) ###
+Convenience function for resizing and cropping an image. _crop_ uses the resize method, so _options_ and _callback_ are the same. _crop_ uses _options.srcPath_, so make sure you set it :) Using only _options.width_ or _options.height_ will create a square dimensioned image. Gravity can also be specified, it defaults to Center. Available gravity options are [NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast]
+
+Example:
+
+```javascript
+im.crop({
+ srcPath: path,
+ dstPath: 'cropped.jpg',
+ width: 800,
+ height: 600,
+ quality: 1,
+ gravity: "North"
+}, function(err, stdout, stderr){
+ // foo
+});
+```
+
+## License (MIT)
+
+Copyright (c) 2010-2012 Rasmus Andersson <http://hunch.se/>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.