I am creating a new site that allows users to upload an image that will accompany information / data. Each user loaded data and image will be displayed in a list format.

Is it wise or foolish to require a user uploaded image to be stored only in a fixed size or to require the user to provide an image of only a fixed size?

The purpose is so that all user uploaded images will display unwarped and beautifully in the webpage?

  • What exactly is it for? If it's a blog, I'd let them be as big as they want (well maybe not 9000x9000px), if it's an avatar I'd make it maybe 64x64. Let us know the specific context
    – Zelda
    Commented Sep 9, 2011 at 21:38

3 Answers 3


You can't assume that the users will be able to scale the images for you. It would be better to do the scaling yourself.

You should let the user know what the maximum size is that will be displayed and that any image larger than this will be scaled down to fit.

This is better than allowing the user to upload the image only to tell them that it's not suitable at the end of a potentially lengthy process.


Definitely do the scaling on your end, and if possible provide a preview and crop tool to help people not end up with a distorted or otherwise ugly picture. I like that you're really striving to ensure no bad photo experience on the site, but leaving it in the hands of the general user base is what often leads to such problems.

I've been surprised many times at how many people don't know how to resize, change formats or crop pictures despite using their computers for years. Invest a bit more in error prevention in the image upload and you'll not only prevent bad photos but will make people happier as they use your site without confusing image issues.


I've had this problem and I recommend to store at least one original and resize either way in (uploading) or out (downloading) and I switching from doing the resize on uploads to doing the resize on downloads and the latter is preferable (to just save one which also is the original) which can depend on your implementation details. I first enabled limited number of simultaneous uploads and resized using my own code. It worked but was as low level as need to know os-dependant variables like directory paths and storing several copies of same image which is somewhat redundant.

Now I use google app engine and with python and can just save originals and send the image size as a parameter to a generated url for convenient resize to a size I always can change later.

For example


100 pixels and original is


I find google app engine's solution very good since it saves storage and abstracts away details like mime type and filename (gae will do that for you). All I need to enable unlimited uploads and getting also the mime type and filename by leveraging the app engine api is a simple loop:

for upload in self.get_uploads():
  img = Image(reference=user) #create reference to user
  img.primary_image = upload.key() #create reference to blob
  img.put() # save

And not only is this solution high-level since I'm not forced to define mime types or other low-level variables that may change, what's also preferable with saving just one (the original) is that it saves storage compared to saving copoies in different formats. So I recommend leveraging your service provider as much as you can since I'm glad with my experience in upgrading.

Another one of my apps requires 3 random images to have same size and that problem I'm going to solve by dynamically by request resizing 3 images to the same size of the smallest so that quality still is good from not scaling up.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.