• <small id='ocedU'></small><noframes id='ocedU'>

    <i id='ocedU'><tr id='ocedU'><dt id='ocedU'><q id='ocedU'><span id='ocedU'><b id='ocedU'><form id='ocedU'><ins id='ocedU'></ins><ul id='ocedU'></ul><sub id='ocedU'></sub></form><legend id='ocedU'></legend><bdo id='ocedU'><pre id='ocedU'><center id='ocedU'></center></pre></bdo></b><th id='ocedU'></th></span></q></dt></tr></i><div id='ocedU'><tfoot id='ocedU'></tfoot><dl id='ocedU'><fieldset id='ocedU'></fieldset></dl></div>
      <bdo id='ocedU'></bdo><ul id='ocedU'></ul>
  • <tfoot id='ocedU'></tfoot>
    1. <legend id='ocedU'><style id='ocedU'><dir id='ocedU'><q id='ocedU'></q></dir></style></legend>

        PIL&QOOT;IOERROR:带有大图像的图像文件被截断(&Q)

        时间:2024-08-21

            <small id='UTvXc'></small><noframes id='UTvXc'>

              • <i id='UTvXc'><tr id='UTvXc'><dt id='UTvXc'><q id='UTvXc'><span id='UTvXc'><b id='UTvXc'><form id='UTvXc'><ins id='UTvXc'></ins><ul id='UTvXc'></ul><sub id='UTvXc'></sub></form><legend id='UTvXc'></legend><bdo id='UTvXc'><pre id='UTvXc'><center id='UTvXc'></center></pre></bdo></b><th id='UTvXc'></th></span></q></dt></tr></i><div id='UTvXc'><tfoot id='UTvXc'></tfoot><dl id='UTvXc'><fieldset id='UTvXc'></fieldset></dl></div>
                <tfoot id='UTvXc'></tfoot><legend id='UTvXc'><style id='UTvXc'><dir id='UTvXc'><q id='UTvXc'></q></dir></style></legend>
                  <bdo id='UTvXc'></bdo><ul id='UTvXc'></ul>

                    <tbody id='UTvXc'></tbody>
                • 本文介绍了PIL&QOOT;IOERROR:带有大图像的图像文件被截断(&Q)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我认为这个问题与Zope无关。尽管如此,我还是会解释我正在尝试做的事情:

                  我使用Zope中的put_Factory通过FTP将图像上传到ZODB。上传的图像将作为Zope Image保存在新创建的容器对象中。这可以很好地工作,但是如果图像超过一定的大小(宽度和高度),我想调整图像的大小。所以我使用PIL的缩略图功能来调整它们的大小,即调整到200x200。只要上传的图像相对较小,这就可以很好地工作。我没有检查确切的限制,但976x1296px仍然可以。

                  带大图的图片:

                  Module PIL.Image, line 1559, in thumbnail
                  Module PIL.ImageFile, line 201, in load
                  IOError: image file is truncated (nn bytes not processed).
                  

                  我从我的相机测试了很多jpeg。我不认为它们都被截断了。

                  以下是我的代码:

                  if img and img.meta_type == 'Image':
                    pilImg = PIL.Image.open( StringIO(str(img.data)) )
                  elif imgData:
                    pilImg = PIL.Image.open( StringIO(imgData) )
                  
                  pilImg.thumbnail((width, height), PIL.Image.ANTIALIAS)
                  

                  因为我使用的是put_Factory,所以没有file对象,我使用的是工厂中的原始数据或以前创建的(Zope)Image对象。

                  我听说当超过某个大小时,PIL会以不同的方式处理图像数据,但我不知道如何调整我的代码。还是和PIL的懒加载有关?

                  推荐答案

                  我在这里回复有点晚,但我遇到了类似的问题,我想分享我的解决方案。首先,下面是针对此问题的非常典型的堆栈跟踪:

                  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)
                  

                  如果我们看一下第220行(在您的例子中是第201行-可能您运行的版本略有不同),我们会看到PIL正在读取文件的块,并且它预计这些块将具有一定的大小。原来,您可以通过更改设置来要求pil容忍被截断的文件(挡路中缺少某些文件)。

                  在您的挡路代码之前,只需添加以下内容:

                  from PIL import ImageFile
                  ImageFile.LOAD_TRUNCATED_IMAGES = True
                  

                  .而且你应该表现得很好。

                  编辑:看起来这对与Pillow捆绑在一起的PIL版本("pip安装枕头")有帮助,但可能不适用于PIL的默认安装

                  这篇关于PIL&QOOT;IOERROR:带有大图像的图像文件被截断(&Q)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:是否将文本换行并将字体调整为PIL中的容器? 下一篇:定位屏幕上的颜色位置?

                  相关文章

                • <legend id='q3MKC'><style id='q3MKC'><dir id='q3MKC'><q id='q3MKC'></q></dir></style></legend>

                  <i id='q3MKC'><tr id='q3MKC'><dt id='q3MKC'><q id='q3MKC'><span id='q3MKC'><b id='q3MKC'><form id='q3MKC'><ins id='q3MKC'></ins><ul id='q3MKC'></ul><sub id='q3MKC'></sub></form><legend id='q3MKC'></legend><bdo id='q3MKC'><pre id='q3MKC'><center id='q3MKC'></center></pre></bdo></b><th id='q3MKC'></th></span></q></dt></tr></i><div id='q3MKC'><tfoot id='q3MKC'></tfoot><dl id='q3MKC'><fieldset id='q3MKC'></fieldset></dl></div>
                  • <bdo id='q3MKC'></bdo><ul id='q3MKC'></ul>

                    1. <small id='q3MKC'></small><noframes id='q3MKC'>

                      <tfoot id='q3MKC'></tfoot>