def _process_content(self, filename, content): img = open_image(content) original_format = img.format img = self.field.process(img, self) # Determine the format. format = self.field.format if not format: if callable(getattr(self.field, self.field._upload_to_attr)): # The extension is explicit, so assume they want the matching format. extension = os.path.splitext(filename)[1].lower() # Try to guess the format from the extension. try: format = extension_to_format(extension) except UnknownExtensionError: pass format = format or img.format or original_format or 'JPEG' if format == 'JPEG': img_to_fobj_kwargs = dict(quality=int(self.field.quality), optimize=True) else: img_to_fobj_kwargs = {} # Run the AutoConvert processor if getattr(self.field, 'autoconvert', True): autoconvert_processor = AutoConvert(format) img = autoconvert_processor.process(img) img_to_fobj_kwargs.update(autoconvert_processor.save_kwargs) imgfile = img_to_fobj(img, format, **img_to_fobj_kwargs) content = ContentFile(imgfile.read()) return img, content
def _process_content(self, filename, content): img = open_image(content) original_format = img.format img = self.field.process(img, self) # Determine the format. format = self.field.format if not format: if callable(getattr(self.field, self.field._upload_to_attr)): # The extension is explicit, so assume they want the matching format. extension = os.path.splitext(filename)[1].lower() # Try to guess the format from the extension. try: format = extension_to_format(extension) except UnknownExtensionError: pass format = format or img.format or original_format or 'JPEG' if format != 'JPEG': imgfile = img_to_fobj(img, format) else: imgfile = img_to_fobj(img, format, quality=int(self.field.quality), optimize=True) content = ContentFile(imgfile.read()) return img, content
def _get_suggested_extension(name, format): original_extension = os.path.splitext(name)[1] try: suggested_extension = format_to_extension(format) except UnknownFormatError: extension = original_extension else: if suggested_extension.lower() == original_extension.lower(): extension = original_extension else: try: original_format = extension_to_format(original_extension) except UnknownExtensionError: extension = suggested_extension else: # If the formats match, give precedence to the original extension. if format.lower() == original_format.lower(): extension = original_extension else: extension = suggested_extension return extension
def test_extension_to_format(self): self.assertEqual(utils.extension_to_format('.jpeg'), 'JPEG') self.assertEqual(utils.extension_to_format('.rgba'), 'SGI') with self.assertRaises(utils.UnknownExtensionError): utils.extension_to_format('.txt')
def test_extension_to_format(self): self.assertEqual(utils.extension_to_format(".jpeg"), "JPEG") self.assertEqual(utils.extension_to_format(".rgba"), "SGI") self.assertRaises(utils.UnknownExtensionError, lambda: utils.extension_to_format(".txt"))