def generate_thumb(img, thumb_size, format): """ Generates a thumbnail image and returns a ContentFile object with the thumbnail Parameters: =========== img File object thumb_size desired thumbnail size, ie: (200,120) format format of the original image ('jpeg','gif','png',...) (this format will be used for the generated thumbnail, too) """ img.seek(0) image = Image.open(img) # Convert to RGB if necessary if image.mode not in ('L', 'RGB', 'RGBA'): image = image.convert('RGB') new_image = scale_to_max_size(image, *thumb_size) io = cStringIO.StringIO() # PNG and GIF are the same, JPG is JPEG if format.upper() == 'JPG': format = 'JPEG' new_image.save(io, format) return ContentFile(io.getvalue())