[ADD] image_save_for_web() format argument
authorFabien Meghazi <fme@openerp.com>
Fri, 12 Sep 2014 09:33:53 +0000 (11:33 +0200)
committerFabien Meghazi <fme@openerp.com>
Tue, 16 Sep 2014 17:55:00 +0000 (19:55 +0200)
addons/website/models/website.py
openerp/tools/image.py

index 983d419..21a192b 100644 (file)
@@ -589,8 +589,8 @@ class website(osv.osv):
             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']
index bf81be8..db21580 100644 (file)
@@ -115,14 +115,15 @@ def image_resize_and_sharpen(image, size, factor=2.0):
     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':