我们从Python开源项目中,提取了以下43个代码示例,用于说明如何使用PIL.ImageFile.Parser()。
def response(self, response, request, data): try: isImage = getattr(request, 'isImage') except AttributeError: isImage = False if isImage: try: #For some reason more images get parsed using the parser #rather than a file...PIL still needs some work I guess p = ImageFile.Parser() p.feed(data) im = p.close() im = im.transpose(Image.ROTATE_180) output = StringIO() im.save(output, format=self.imageType) data = output.getvalue() output.close() self.clientlog.info("Flipped image", extra=request.clientInfo) except Exception as e: self.clientlog.info("Error: {}".format(e), extra=request.clientInfo) return {'response': response, 'request': request, 'data': data}
def handleResponse(self, request, data): try: isImage = getattr(request, 'isImage') except AttributeError: isImage = False if isImage: try: image_type = request.imageType #For some reason more images get parsed using the parser #rather than a file...PIL still needs some work I guess p = ImageFile.Parser() p.feed(data) im = p.close() im = im.transpose(Image.ROTATE_180) output = StringIO() im.save(output, format=image_type) data = output.getvalue() output.close() logging.info("Flipped image") except Exception as e: print "Error: %s" % e return {'request': request, 'data': data}
def load_seek(self): # Flag the ImageFile.Parser so that it # just does all the decode at the end. pass # # --------------------------------------------------------------------
def save_normalized_image(path, data): image_parser = ImageFile.Parser() try: image_parser.feed(data) image = image_parser.close() except IOError: raise return False image.thumbnail(MAX_IMAGE_SIZE, Image.ANTIALIAS) if image.mode != 'RGB': image = image.convert('RGB') image.save(path) return True
def get_image_dimensions(file_or_path, close=False): """ Returns the (width, height) of an image, given an open file or a path. Set 'close' to True to close the file at the end if it is initially in an open state. """ # Try to import PIL in either of the two ways it can end up installed. try: from PIL import ImageFile as PILImageFile except ImportError: import ImageFile as PILImageFile p = PILImageFile.Parser() if hasattr(file_or_path, 'read'): file = file_or_path file_pos = file.tell() file.seek(0) else: file = open(file_or_path, 'rb') close = True try: while 1: data = file.read(1024) if not data: break p.feed(data) if p.image: return p.image.size return None finally: if close: file.close() else: file.seek(file_pos)
def get_image_dimensions(file_or_path, close=False): """ Returns the (width, height) of an image, given an open file or a path. Set 'close' to True to close the file at the end if it is initially in an open state. """ from PIL import ImageFile as PillowImageFile p = PillowImageFile.Parser() if hasattr(file_or_path, 'read'): file = file_or_path file_pos = file.tell() file.seek(0) else: file = open(file_or_path, 'rb') close = True try: # Most of the time Pillow only needs a small chunk to parse the image # and get the dimensions, but with some TIFF files Pillow needs to # parse the whole file. chunk_size = 1024 while 1: data = file.read(chunk_size) if not data: break try: p.feed(data) except zlib.error as e: # ignore zlib complaining on truncated stream, just feed more # data to parser (ticket #19457). if e.args[0].startswith("Error -5"): pass else: raise except struct.error: # Ignore PIL failing on a too short buffer when reads return # less bytes than expected. Skip and feed more data to the # parser (ticket #24544). pass if p.image: return p.image.size chunk_size *= 2 return (None, None) finally: if close: file.close() else: file.seek(file_pos)
def get_image_dimensions(file_or_path, close=False): """ Returns the (width, height) of an image, given an open file or a path. Set 'close' to True to close the file at the end if it is initially in an open state. """ from PIL import ImageFile as PillowImageFile p = PillowImageFile.Parser() if hasattr(file_or_path, 'read'): file = file_or_path file_pos = file.tell() file.seek(0) else: file = open(file_or_path, 'rb') close = True try: # Most of the time Pillow only needs a small chunk to parse the image # and get the dimensions, but with some TIFF files Pillow needs to # parse the whole file. chunk_size = 1024 while 1: data = file.read(chunk_size) if not data: break try: p.feed(data) except zlib.error as e: # ignore zlib complaining on truncated stream, just feed more # data to parser (ticket #19457). if e.args[0].startswith("Error -5"): pass else: raise if p.image: return p.image.size chunk_size *= 2 return None finally: if close: file.close() else: file.seek(file_pos)