Ticket #11158: svn_patch.diff

File svn_patch.diff, 1.2 KB (added by kua, 15 years ago)

a patch for the trunk

  • images.py

     
    3232    """Returns the (width, height) of an image, given an open file or a path."""
    3333    from PIL import ImageFile as PILImageFile
    3434    p = PILImageFile.Parser()
    35     close = False
     35
    3636    if hasattr(file_or_path, 'read'):
    3737        file = file_or_path
     38        file_pos = file.tell()
     39        file.seek(0)
     40        we_opened_this_file = False
    3841    else:
    3942        file = open(file_or_path, 'rb')
    40         close = True
    41     try:
    42         while 1:
    43             data = file.read(1024)
    44             if not data:
    45                 break
    46             p.feed(data)
    47             if p.image:
    48                 return p.image.size
    49         return None
    50     finally:
    51         if close:
    52             file.close()
     43        we_opened_this_file = True
     44
     45    def file_cleanup():
     46        if we_opened_this_file:
     47          file.close()
     48        else:
     49          file.seek(file_pos)
     50
     51
     52    while 1:
     53        data = file.read(1024)
     54        if not data:
     55            break
     56        p.feed(data)
     57        if p.image:
     58            file_cleanup()
     59            return p.image.size
     60
     61    file_cleanup()
     62    return None
Back to Top