response.data = data
else:
size = (max_w, max_h)
- image = image_resize_and_sharpen(image, size)
- image_save_for_web(image, response.stream)
+ img = image_resize_and_sharpen(image, size)
+ image_save_for_web(img, response.stream, format=image.format)
# invalidate content-length computed by make_conditional as
# writing to response.stream does not do it (as of werkzeug 0.9.3)
del response.headers['Content-Length']
image.paste(resized_image, ((size[0] - resized_image.size[0]) / 2, (size[1] - resized_image.size[1]) / 2))
return image
-def image_save_for_web(image, fp=None):
+def image_save_for_web(image, fp=None, format=None):
"""
Save image optimized for web usage.
:param image: PIL.Image.Image()
:param fp: File name or file object. If not specified, a bytestring is returned.
+ :param format: File format if could not be deduced from image.
"""
- opt = dict(format=image.format)
+ opt = dict(format=image.format or format)
if image.format == 'PNG':
opt.update(optimize=True)
if image.mode != 'P':