From c1f278bb84a48c143111000f29bbd640ab52a677 Mon Sep 17 00:00:00 2001 From: Andrea de Marco <24erre@gmail.com> Date: Fri, 10 Jan 2014 10:35:07 +0100 Subject: [PATCH 1/2] Preserve RGBA image.mode --- avatar/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avatar/models.py b/avatar/models.py index 5bc3a52..0657b6c 100644 --- a/avatar/models.py +++ b/avatar/models.py @@ -103,7 +103,7 @@ class Avatar(models.Model): else: diff = int((h - w) / 2) image = image.crop((0, diff, w, h - diff)) - if image.mode != "RGB": + if image.mode not in ("RGB", "RGBA"): image = image.convert("RGB") image = image.resize((size, size), settings.AVATAR_RESIZE_METHOD) thumb = six.BytesIO() From 3b3bdd8df453d3373745e2768a6555f22630836d Mon Sep 17 00:00:00 2001 From: z4r <24erre@gmail.com> Date: Fri, 10 Jan 2014 12:16:08 +0100 Subject: [PATCH 2/2] RGBA and CMYK thumb creation tests --- tests/data/django.png | Bin 0 -> 2349 bytes tests/data/django_pony_cmyk.jpg | Bin 0 -> 11862 bytes tests/tests.py | 14 ++++++++++++++ 3 files changed, 14 insertions(+) create mode 100644 tests/data/django.png create mode 100644 tests/data/django_pony_cmyk.jpg diff --git a/tests/data/django.png b/tests/data/django.png new file mode 100644 index 0000000000000000000000000000000000000000..82474cbfde924b2a7607153ae7a1e24f4fae2ed0 GIT binary patch literal 2349 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 T62BAR00000NkvXXu0mjf@QQ0i literal 0 HcmV?d00001 diff --git a/tests/data/django_pony_cmyk.jpg b/tests/data/django_pony_cmyk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2712f7762709de24aff22441a6f1c0eaec27f806 GIT binary patch literal 11862 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 literal 0 HcmV?d00001 diff --git a/tests/tests.py b/tests/tests.py index ee31c95..2df578a 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -2,6 +2,7 @@ import os.path from django.test import TestCase from django.core.urlresolvers import reverse +from django.test.utils import override_settings from avatar.conf import settings from avatar.util import get_primary_avatar, get_user_model @@ -126,3 +127,16 @@ class AvatarUploadTests(TestCase): # def testChangePrimaryAvatar # def testDeleteThumbnailAndRecreation # def testAutomaticThumbnailCreation + + @override_settings(AVATAR_THUMB_FORMAT='png') + def testAutomaticThumbnailCreationRGBA(self): + upload_helper(self, "django.png") + avatar = get_primary_avatar(self.user) + image = Image.open(avatar.avatar.storage.open(avatar.avatar_name(settings.AVATAR_DEFAULT_SIZE), 'rb')) + self.assertEqual(image.mode, 'RGBA') + + def testAutomaticThumbnailCreationCMYK(self): + upload_helper(self, "django_pony_cmyk.jpg") + avatar = get_primary_avatar(self.user) + image = Image.open(avatar.avatar.storage.open(avatar.avatar_name(settings.AVATAR_DEFAULT_SIZE), 'rb')) + self.assertEqual(image.mode, 'RGB')