Bertrand Bordage avatar Bertrand Bordage committed b07db53

Fixes a strange bug that was breaking thumbnails rendering on some images.

Comments (0)

Files changed (1)

cmsplugin_nivoslider/thumbnail_processors.py

 def pad_image(image, **kwargs):
     'Pad an image to make it the same aspect ratio of the desired thumbnail.'
 
-    img_size = image.size
-    des_size = kwargs['size']
-    fit = [float(img_size[i])/des_size[i] for i in xrange(0, 2)]
+    img_width, img_height = image.size
+    des_width, des_height = kwargs['size']
+    fit = (float(img_width) / des_width,
+           float(img_height) / des_height)
 
     if fit[0] > fit[1]:
-        new_image = image.resize((image.size[0],
-                                  int(round(des_size[1] * fit[0]))))
-        top = int((new_image.size[1] - image.size[1])/2)
+        new_image_size = (img_width, int(round(des_height * fit[0])))
+        top = (new_image_size[1] - img_height) / 2
         left = 0
     elif fit[0] < fit[1]:
-        new_image = image.resize((int(round(des_size[0] * fit[1])),
-                                  image.size[1]))
+        new_image_size = (int(round(des_width * fit[1])), img_height)
         top = 0
-        left = int((new_image.size[0] - image.size[0]) / 2)
+        left = (new_image_size[0] - img_width) / 2
     else:
         return image
 
-    # For transparent
-    #mask=Image.new('L', new_image.size, color=0)
-    #new_image.putalpha(mask)
-
-    # For black
-    new_image.paste((0, 0, 0, 0))
+    # Black background
+    new_image = Image.new('RGBA', new_image_size)
 
     new_image.paste(image, (left, top))
+
     return new_image
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.