Python PIL “IOError: image file truncated” with big images

前端 未结 5 1127
逝去的感伤
逝去的感伤 2020-12-02 06:17

I think this problem is not Zope-related. Nonetheless I\'ll explain what I\'m trying to do:

I\'m using a PUT_factory in Zope to upload images to the ZODB per FTP. Th

5条回答
  •  醉梦人生
    2020-12-02 06:53

    I'm a little late to reply here, but I ran into a similar problem and I wanted to share my solution. First, here's a pretty typical stack trace for this problem:

    Traceback (most recent call last):
      ...
      File ..., line 2064, in ...
        im.thumbnail(DEFAULT_THUMBNAIL_SIZE, Image.ANTIALIAS)
      File "/Library/Python/2.7/site-packages/PIL/Image.py", line 1572, in thumbnail
        self.load()
      File "/Library/Python/2.7/site-packages/PIL/ImageFile.py", line 220, in load
        raise IOError("image file is truncated (%d bytes not processed)" % len(b))
    IOError: image file is truncated (57 bytes not processed)
    

    If we look around line 220 (in your case line 201—perhaps you are running a slightly different version), we see that PIL is reading in blocks of the file and that it expects that the blocks are going to be of a certain size. It turns out that you can ask PIL to be tolerant of files that are truncated (missing some file from the block) by changing a setting.

    Somewhere before your code block, simply add the following:

    from PIL import ImageFile
    ImageFile.LOAD_TRUNCATED_IMAGES = True
    

    ...and you should be good.

    EDIT: It looks like this helps for the version of PIL bundled with Pillow ("pip install pillow"), but may not work for default installations of PIL

提交回复
热议问题