我们从Python开源项目中,提取了以下7个代码示例,用于说明如何使用PIL.Image.MIME。
def to_python(self, data): """ Checks that the file-upload field data contains a valid image (GIF, JPG, PNG, possibly others -- whatever the Python Imaging Library supports). """ f = super(ImageField, self).to_python(data) if f is None: return None from PIL import Image # We need to get a file object for Pillow. We might have a path or we might # have to read the data into memory. if hasattr(data, 'temporary_file_path'): file = data.temporary_file_path() else: if hasattr(data, 'read'): file = BytesIO(data.read()) else: file = BytesIO(data['content']) try: # load() could spot a truncated JPEG, but it loads the entire # image in memory, which is a DoS vector. See #3848 and #18520. image = Image.open(file) # verify() must be called immediately after the constructor. image.verify() # Annotating so subclasses can reuse it for their own validation f.image = image f.content_type = Image.MIME[image.format] except Exception: # Pillow doesn't recognize it as an image. six.reraise(ValidationError, ValidationError( self.error_messages['invalid_image'], code='invalid_image', ), sys.exc_info()[2]) if hasattr(f, 'seek') and callable(f.seek): f.seek(0) return f
def get_image_stats(s): """ Get stats from the thumbnail. """ img = Image.open(StringIO(decode_image(s))) h = {} #print ('FORMAT',img.format) h['mime'] = Image.MIME[img.format] h['width'] = img.size[0] h['height'] = img.size[1] h['aspect_ratio'] = img.size[0] / float(img.size[1]) ## TODO: Round this off, for consistency across serializers? return h
def to_python(self, data): """ Checks that the file-upload field data contains a valid image (GIF, JPG, PNG, possibly others -- whatever the Python Imaging Library supports). """ test_file = super(DjangoImageField, self).to_python(data) if test_file is None: return None # We need to get a file object for Pillow. We might have a path or we might # have to read the data into memory. if hasattr(data, 'temporary_file_path'): ifile = data.temporary_file_path() else: if hasattr(data, 'read'): ifile = BytesIO(data.read()) else: ifile = BytesIO(data['content']) try: # load() could spot a truncated JPEG, but it loads the entire # image in memory, which is a DoS vector. See #3848 and #18520. image = Image.open(ifile) # verify() must be called immediately after the constructor. image.verify() # Annotating so subclasses can reuse it for their own validation test_file.image = image test_file.content_type = Image.MIME[image.format] except Exception: # add a workaround to handle svg images if not self.is_svg(ifile): six.reraise(ValidationError, ValidationError( self.error_messages['invalid_image'], code='invalid_image', ), sys.exc_info()[2]) if hasattr(test_file, 'seek') and callable(test_file.seek): test_file.seek(0) return test_file