From b98771f06760b1ccbdf2f37dfce5d87921d3c9a4 Mon Sep 17 00:00:00 2001 From: Pablo Vazquez Date: Sun, 17 Sep 2017 21:49:55 +0200 Subject: [PATCH] Improvements to image thumbnailing - Optimize JPEGs and increase quality from 75 to 95 - Don't always convert to RGB, first check if RGBA and save as PNG optimized Thanks to Dr. Sybren and Francesco for review and feedback --- pillar/api/utils/imaging.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pillar/api/utils/imaging.py b/pillar/api/utils/imaging.py index 7eddcff8..e91b8087 100644 --- a/pillar/api/utils/imaging.py +++ b/pillar/api/utils/imaging.py @@ -30,9 +30,15 @@ def generate_local_thumbnails(name_base, src): resize_and_crop(src, dst, settings['size']) width, height = settings['size'] else: - im = Image.open(src).convert('RGB') - im.thumbnail(settings['size']) - im.save(dst, format='JPEG', quality=75) + im = Image.open(src) + im.thumbnail(settings['size'], resample=Image.LANCZOS) + + # If the source image has transparency, save as PNG + if im.mode == 'RGBA': + im.save(dst, format='PNG', optimize=True) + else: + im.save(dst, format='JPEG', optimize=True, quality=95) + width, height = im.size thumb_info = {'size': size,