node package manager


Middleware for resizing images

Image shrink

Connect middleware that resizes images on the fly with graphicsmagick.

It supports cropping & scaling, and caches the resulting images.



Shrink will then intercept all calls to:

  • /resize/filename-40x60.jpg?hash=0123456789abcdef
  • /crop/filename-40x60.jpg?hash=0123456789abcdef

Where the hex hash can either be (pseudo code):

md5(cacheFilename + secret) (when you can generate the hashes for each file individually)


md5("resize-40x60-secret") (when you have a JS app wher you can't leak the secret, but give the permission to generate a specify size of images)


0-100, the quality of the resulting images


This function get's called with the filename parameter, and should return a complete URI to the filename. If you're working with mongo or some other store for your images, read the image here, and save it temporarely. Then call the callback with the isTmpFile parameter like this:

getFileUri = function(filename, callback) {
  // Read file here and save it to tmpFileUri 
  callback(tmpFileUri, true);
  // Passing `true` here tells image-shrink that it should delete the 
  // file when the image has been processed. 

The path for the cache.