wip: This is work in progress. Converting to use generators and graphicsmagick-stream library. The uploading is handled by pkgcloud. The master branch and 1.0.0-alpha1 tag works only with s3.
Please use imager@0.4.0 which is stable. The 1.0.0-alpha releases are unstable and not recommended for production.
A node module to resize, crop and upload images (with different variants and presets) to the cloud.
- node >= 0.11.12 with
--harmonyflag - You need to install libgraphicsmagicks.
Using osx
$ brew install graphicsmagick --build-from-sourceUsing ubuntu
$ sudo apt-get install libgraphicsmagick1-dev$ npm install imagerUse a config file. For example imager-config.js
exports.variants={item: {// variantthumb: {// presetoptions: {// preset optionspool: 5,scale: {width: 200,height: 150,type: 'contain'},crop: {width: 200,height: 150,x: 0,y: 0},format: 'png',rotate: 'auto',}},large: {original: true// upload original image without image processing}},gallery: {// ...}};In the above config, item and gallery are variants. thumb and large are presets. Each preset has an options object which is a graphicsmagick-stream config object.
options- An object that is passed to graphicsmagick. See what options are available hererename- A function that accepts an objectfileas an argument. It has the following properties:name,size,typeandpath. It is called before uploading each file.Example:
variants.item.thumb.rename=function(file){return'users/1/thumb/'+file.name;};varimager=newImager(variants.item, ...);
original- A true value. If this option is set, the original image will be uploaded without any image processing.
exports.storages={local: {provider: 'local',path: '/tmp',mode: 0777},rackspace: {provider: 'rackspace',username: process.env.IMAGER_RACKSPACE_USERNAME,apiKey: process.env.IMAGER_RACKSPACE_KEY,authUrl: 'https://lon.auth.api.rackspacecloud.com',region: 'IAD',// https://github.com/pkgcloud/pkgcloud/issues/276container: process.env.IMAGER_RACKSPACE_CONTAINER},amazon: {provider: 'amazon',key: process.env.IMAGER_S3_KEY,keyId: process.env.IMAGER_S3_KEYID,container: process.env.IMAGER_S3_BUCKET}}varImager=require('imager');varconfig=require('./imager-config.js');varimager=newImager(config.variants.item,config.storages.amazon);// You can also pass only the storage without a variant which will simply// upload the original image// new Imager(storages.amazon)files is an array of files or a single file. A file can be a file object, absolute file path pointing a local file or base64 encoded image data. callback accepts err and an object containing the array of uploaded images.
varconfig=require('./imager-config.js');varimager=newImager(config.variants.item,config.storages.amazon);imager.upload(files,function(err,avatar){// avatar =>// {// thumb: [ 'https://fudge.s3.amazonaws.com/user/1/thumb/image-1.png', ],// large: [ 'https://fudge.s3.amazonaws.com/user/1/large/image-1.png', ]// }});files is an array of files or a single file. A file should be the file name of the image on the storage. callback accepts err as an argument.
varconfig=require('./imager-config.js');varimager=newImager(config.storages.amazon);varfiles=['file-1.png'];// or just 'file-1.png'imager.remove(files,function(err){});$ npm test- Support base64 image uploads
Implement.remove()- Implement
.regenerate() - Test the api's for rackspace
MIT