diff --git a/apps/converter/backends/graphicsmagick/base.py b/apps/converter/backends/graphicsmagick/base.py index 1d70108a94..d4d720b894 100644 --- a/apps/converter/backends/graphicsmagick/base.py +++ b/apps/converter/backends/graphicsmagick/base.py @@ -33,24 +33,26 @@ class ConverterClass(ConverterBase): def convert_file(self, input_filepath, output_filepath, transformations=None, page=DEFAULT_PAGE_NUMBER, file_format=DEFAULT_FILE_FORMAT): arguments = [] + try: + if transformations: + for transformation in transformations: + if transformation['transformation'] == TRANSFORMATION_RESIZE: + dimensions = [] + dimensions.append(unicode(transformation['arguments']['width'])) + if 'height' in transformation['arguments']: + dimensions.append(unicode(transformation['arguments']['height'])) + arguments.append(u'-resize') + arguments.append(u'%s' % DIMENSION_SEPARATOR.join(dimensions)) - if transformations: - for transformation in transformations: - if transformation['transformation'] == TRANSFORMATION_RESIZE: - dimensions = [] - dimensions.append(unicode(transformation['arguments']['width'])) - if 'height' in transformation['arguments']: - dimensions.append(unicode(transformation['arguments']['height'])) - arguments.append(u'-resize') - arguments.append(u'%s' % DIMENSION_SEPARATOR.join(dimensions)) + elif transformation['transformation'] == TRANSFORMATION_ZOOM: + arguments.append(u'-resize') + arguments.append(u'%d%%' % transformation['arguments']['percent']) - elif transformation['transformation'] == TRANSFORMATION_ZOOM: - arguments.append(u'-resize') - arguments.append(u'%d%%' % transformation['arguments']['percent']) - - elif transformation['transformation'] == TRANSFORMATION_ROTATE: - arguments.append(u'-rotate') - arguments.append(u'%s' % transformation['arguments']['degrees']) + elif transformation['transformation'] == TRANSFORMATION_ROTATE: + arguments.append(u'-rotate') + arguments.append(u'%s' % transformation['arguments']['degrees']) + except: + pass if file_format.lower() == u'jpeg' or file_format.lower() == u'jpg': arguments.append(u'-quality') diff --git a/apps/converter/backends/imagemagick/base.py b/apps/converter/backends/imagemagick/base.py index 977da783c2..e55923de2b 100644 --- a/apps/converter/backends/imagemagick/base.py +++ b/apps/converter/backends/imagemagick/base.py @@ -31,23 +31,26 @@ class ConverterClass(ConverterBase): def convert_file(self, input_filepath, output_filepath, transformations=None, page=DEFAULT_PAGE_NUMBER, file_format=DEFAULT_FILE_FORMAT): arguments = [] - if transformations: - for transformation in transformations: - if transformation['transformation'] == TRANSFORMATION_RESIZE: - dimensions = [] - dimensions.append(unicode(transformation['arguments']['width'])) - if 'height' in transformation['arguments']: - dimensions.append(unicode(transformation['arguments']['height'])) - arguments.append(u'-resize') - arguments.append(u'%s' % DIMENSION_SEPARATOR.join(dimensions)) + try: + if transformations: + for transformation in transformations: + if transformation['transformation'] == TRANSFORMATION_RESIZE: + dimensions = [] + dimensions.append(unicode(transformation['arguments']['width'])) + if 'height' in transformation['arguments']: + dimensions.append(unicode(transformation['arguments']['height'])) + arguments.append(u'-resize') + arguments.append(u'%s' % DIMENSION_SEPARATOR.join(dimensions)) - elif transformation['transformation'] == TRANSFORMATION_ZOOM: - arguments.append(u'-resize') - arguments.append(u'%d%%' % transformation['arguments']['percent']) - - elif transformation['transformation'] == TRANSFORMATION_ROTATE: - arguments.append(u'-rotate') - arguments.append(u'%s' % transformation['arguments']['degrees']) + elif transformation['transformation'] == TRANSFORMATION_ZOOM: + arguments.append(u'-resize') + arguments.append(u'%d%%' % transformation['arguments']['percent']) + + elif transformation['transformation'] == TRANSFORMATION_ROTATE: + arguments.append(u'-rotate') + arguments.append(u'%s' % transformation['arguments']['degrees']) + except: + pass if file_format.lower() == u'jpeg' or file_format.lower() == u'jpg': arguments.append(u'-quality') diff --git a/apps/converter/backends/python/base.py b/apps/converter/backends/python/base.py index e4affcb7fe..71386bf345 100644 --- a/apps/converter/backends/python/base.py +++ b/apps/converter/backends/python/base.py @@ -100,20 +100,25 @@ class ConverterClass(ConverterBase): # do something to im except EOFError: pass # end of sequence - - if transformations: - aspect = 1.0 * im.size[0] / im.size[1] - for transformation in transformations: - if transformation['transformation'] == TRANSFORMATION_RESIZE: - width = int(transformation['arguments']['width']) - height = int(transformation['arguments'].get('height', 1.0 * width * aspect)) - im = self.resize(im, (width, height)) - elif transformation['transformation'] == TRANSFORMATION_ZOOM: - decimal_value = float(transformation['arguments']['percent']) / 100 - im = im.transform((im.size[0] * decimal_value, im.size[1] * decimal_value), Image.EXTENT, (0, 0, im.size[0], im.size[1])) - elif transformation['transformation'] == TRANSFORMATION_ROTATE: - # PIL counter degress counter-clockwise, reverse them - im = im.rotate(360 - transformation['arguments']['degrees']) + + try: + if transformations: + aspect = 1.0 * im.size[0] / im.size[1] + for transformation in transformations: + arguments = transformation.get('arguments') + if transformation['transformation'] == TRANSFORMATION_RESIZE: + width = int(arguments.get('width', 0)) + height = int(arguments.get('height', 1.0 * width * aspect)) + im = self.resize(im, (width, height)) + elif transformation['transformation'] == TRANSFORMATION_ZOOM: + decimal_value = float(arguments.get('percent', 100)) / 100 + im = im.transform((im.size[0] * decimal_value, im.size[1] * decimal_value), Image.EXTENT, (0, 0, im.size[0], im.size[1])) + elif transformation['transformation'] == TRANSFORMATION_ROTATE: + # PIL counter degress counter-clockwise, reverse them + im = im.rotate(360 - arguments.get('degrees', 0)) + except: + # Ignore all transformation error + pass if im.mode not in ('L', 'RGB'): im = im.convert('RGB') @@ -177,3 +182,6 @@ class ConverterClass(ConverterBase): img.save(out, 'JPEG', quality=75) else: return img + + #if isinstance(self.regex, basestring): + # self.regex = re.compile(regex)