Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using AWS S3 for photo storage

I'm going to be using S3 to store user uploaded photos. Obviously, I wont be serving the image files to user agents without resizing them down. However, not one size would do, as some thumbnails will be smaller than other larger previews. So, I was thinking of making a standard set of dimensions scaling from the lowest 16x16 to some highest 1024x1024. Is this a good way to solve this problem? What if I need a new size later on? How would you solve this?

like image 974
Sam Avatar asked Oct 20 '12 04:10

Sam


1 Answers

Pre-generating different sizes and storing them in S3 is a fine approach, especially if you know what sizes you need, are likely to use all of the sizes for all of the images, and don't have so many images and sizes that the storage cost is excessive.

Here's another approach I use when I don't want to pre-generate and store all the different sizes for every image, or when I don't know what sizes I will want to use in the future:

  1. Store the original size in S3.

  2. Run a web server that can generate any desired size from the original image on request.

  3. Stick a CDN (CloudFront) in front of the web server.

Now, your web site or application can request a URL like /16x16/someimage.jpg from CloudFront. The first time this happens, CloudFront will get the resized image from your web server, but then CloudFront will cache the image and serve it for you, greatly reducing the amount of traffic that hits your web server.

Here's a service that resizes images from arbitrary URLs, serving them through CloudFront: http://filter.to

like image 84
Eric Hammond Avatar answered Oct 11 '22 22:10

Eric Hammond