From dbd676646b206e5f529069ae927b1d6632f02460 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 16 Sep 2015 15:55:11 -0400 Subject: [PATCH] Don't convert images blindly to RGB. Only convert to RGB or RGBA when saving to JPEG and mode is 'P'. documents.tests.test_models.MultiPageTiffTestCase passes again. --- mayan/apps/converter/backends/python.py | 2 +- mayan/apps/converter/classes.py | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/mayan/apps/converter/backends/python.py b/mayan/apps/converter/backends/python.py index e57c653394..0b32d82827 100644 --- a/mayan/apps/converter/backends/python.py +++ b/mayan/apps/converter/backends/python.py @@ -93,7 +93,7 @@ class Python(ConverterBase): file_object.seek(0) else: try: - image = Image.open(self.file_object).convert('RGB') + image = Image.open(self.file_object) except IOError as exception: error_message = _('Exception determining PDF page count; %s') % exception logger.error(error_message) diff --git a/mayan/apps/converter/classes.py b/mayan/apps/converter/classes.py index 41b8cb8653..f6ddf35116 100644 --- a/mayan/apps/converter/classes.py +++ b/mayan/apps/converter/classes.py @@ -163,7 +163,7 @@ class ConverterBase(object): self.file_object.seek(0) try: - self.image = Image.open(self.file_object).convert('RGB') + self.image = Image.open(self.file_object) except IOError: # Cannot identify image file self.image = self.convert(page_number=page_number) @@ -176,7 +176,16 @@ class ConverterBase(object): self.seek(0) image_buffer = StringIO() - self.image.save(image_buffer, format=output_format) + + new_mode = self.image.mode + + if output_format.upper() == 'JPEG': + if self.image.mode == 'P': + new_mode = 'RGB' + if 'transparency' in self.image.info: + new_mode = 'RGBA' + + self.image.convert(new_mode).save(image_buffer, format=output_format) image_buffer.seek(0) return image_buffer