15

I'm planning to develop a standalone restful Image Server with the following functionality, but first would like to know if something similar already exists in the open source world (language not important):

  • restful (crud) on master image, e.g: /GET/asd983249as
  • possibly bulk-gets / LIST
  • support for metadata (Creative commons info, dimensions, etc.) that directly relates to the image (references from the domain to these images is NOT included)
  • restful lazy-get of different 'renditions' of an image. i.e if a rendition doesn't exist, it is created upon request. Obviously the original image needs to exist. Different operations are allowed (resize and crop to begin with)
  • e.g: /GET/asd983249as/100x100 (simple resize)
  • allowed dimensions are configurable, so not to get DoS'ed (not as quickly anyway)

Non functional:

  • Reasonable performant / Scalable / HA (yeah I know this doesn't say anything really)
  • Possibly in-mem caching

Thinking about going the Mongo GridFS route, getting MongoDb sharding and replication almost for free. Putting Nginx in front, perhaps (in part) directly using nginx-gridfs (see below) should allow for the rest-stuff and, with some config, some simple caching if gridfs can't handle that for itself (don't know)

Sources:

nginx-gridfs http://www.coffeepowered.net/2010/02/17/serving-files-out-of-gridfs/

Idea of lazy-gets (and a simple implementation of what I'm looking for, although it seemed more hobbyish than an actively maintained project) http://sumitbirla.com/2011/11/how-to-build-a-scalable-caching-resizing-image-server/

other stuff that comes close, but isn't an end solution https://github.com/adamdbradley/foresight.js/wiki/Server-Resizing-Images

Anything that already does this?

Mirwise Khan
  • 1,317
  • 17
  • 25
Geert-Jan
  • 18,623
  • 16
  • 75
  • 137
  • why the downvote? References to existing open source libraries can hardly be considered to solicite debate, etc.? – Geert-Jan Sep 05 '12 at 21:59

2 Answers2

9

I would recommend you this project: https://github.com/imbo/imbo

Its easy to use, stable and used in big projects.

But I am still curious about alternatives.

Adam Lukaszczyk
  • 4,898
  • 3
  • 22
  • 22
1

I was looking for options for a project, and I found those two below. They are not a perfect match to your requirements but seem quite mature. I have no experience with them yet, though.

  1. https://imageresizing.net/ Essential edition is open source. The more advanced solutions are not.
  2. http://thumborize.me/ (with associated github) has many interesting features like face detection, new codecs, smart cropping.
blackbox
  • 671
  • 6
  • 18