Pilbox: an image resizing application server
agschwender.github.io
agschwender.github.io
http://www.imgix.com/ http://cloudinary.com/ http://www.cdnconnect.com/ http://cloudresize.com/ http://cloudimage.io/ http://www.blitline.com/ https://transloadit.com/ https://uploadcare.com/ http://www.resrc.it/
> thumbor is a smart imaging service. It enables on-demand crop, resizing and flipping of images.
> It also features a VERY smart detection of important points in the image for better cropping and resizing, using state-of-the-art face and feature detection algorithms (more on that in Detection Algorithms).
https://github.com/adamdbradley/foresight.js/wiki/Server-Resizing-Images
Many, many implementations, and each goes about it differently. There's unfortunately no widely adopted standard for constructing a URL to request a resized/altered image.It would be great to see traction on something like this RESTful Image API Specification:
https://github.com/riapi/riapiIt has some other cool features like optimizing images/serving webp ones if supported by the client. It can also convert Illustrator and PSD files into svg or jpg/png files. Worth checking out in addition to Pillbox.
(The point of docker is that everything pillbox requires on can be separated completely out from the rest of the system. pillbox requires many libraries. it could require nginx + a special config for proxying. I don't want to do 'apt-get install pillbox' and have it install all this stuff system-wide. I want to keep everything pillbox needs in a separate environment and communicate with it via a port.)
I think nginx should be included for a proxy cache in front of pillbox. Docker would make this simple to setup.
The do the resizing part for you as well as the hosting. But the best thing they offer is face recognition. It's incredible! I haven't been in live with a service since guthub.
Their free tier is probably enough for smaller projects (but without backups in your S3 bucket)
Thumbnails with focus on the face looks fantastic!
[1] http://cloudinary.com/invites/lpov9zyyucivvxsnalc5/bwrrdazeh... (affiliate link. Without: http://cloudinary.com)
0.5: Facial recognition cropping
see http://manuels.github.io/unix-toolbox.js/ and https://github.com/manuels/unix-toolbox.js-imagemagick/tree/...
Awesome.
protip: Dynamically generating content by URLs is also a nice DOS attack surface if you don't rate limit in some way or try to detect abuse.
Wouldn't it be easier/quicker to either:
a) Have a command-line tool to resize images? Alternatively, one that's integrated into the shell so that you can access it from context menus? I.e. right-click -> "resize image"
b) Just open it in mspaint or your open-source image editor of choice?
This thread caught by eye since I have been working on the very same idea for the last year. http://www.pixtulate.com
This lets you change the size of thumbnails by only changing the URLs.
I've been doing it for years, works great.
So, CDN -> nginx -> pillbox.
This is because CDNs can send lots of concurrent requests to the origin server if lots of people are requesting the same new image simultaneously.
I wrote https://bitbucket.org/btubbs/thumpy at work and we've been using it in production for a couple years. It's very similar to Pilbox.
If you're using a CDN, just make sure they cache on query string parameters. Our resize controls were part of the URI, but the other commands were part of the QS. Our CDN stripped queries, so the first image would be cached and any calls with different QS would return the first hit.
A possible alternative that I never implemented was using the request header instead of the query string for additional commands.
Edit to add: Also, if you have lots of resized images on a page, be careful when Google or Bing scraped you. Your CPU and IO will go through the roof as your servers go crazy trying to dynamically generate all the images.
Our video CDN customers can use a custom URL to get a thumbnail of any size from any key frame in their video files, fantastic for building "trick play" responsive HTML5 video player UIs without having to manage a single image.
Just one of the countless little nice-to-haves that sets a VDN apart from a CDN.
This would seem to be his employer:
[1] https://github.com/hcarvalhoalves/django-rest-thumbnails
EDIT: I get it now: People would change the URL to dynamically request an image of just the size they need.