我认为这个问题与Zope无关。但是我会解释一下我的尝试:
我在Zope中使用PUT_factory将图片通过FTP上传到ZODB。上传的图像被保存为Zope Image,并放置在新创建的容器对象内部。这很好用,但是如果图像超过一定大小(宽度和高度),我想调整图像的大小。因此,我使用PIL的缩略图函数将它们调整为200x200。只要上传的图像相对较小,这就可以正常工作。我没有检查确切的限制,但是976x1296像素仍然可以。
对于更大的图片,我遇到了:
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,所以我没有一个文件对象,我使用来自工厂的原始数据或之前创建的(Zope)图像对象。
我听说当图像大小超过一定尺寸时,PIL会以不同的方式处理图像数据,但我不知道如何调整我的代码。还是与PIL的延迟加载有关?
imageio
来获得类似的错误,导致我发布了这篇文章,因为Pillow只报告了在JpegImageFile
和float
之间的无效操作)。 - hyittorch.utils.data.DataLoader
对图像数据集进行训练时,我来到这里 - 这个解决方案有效。 - Alex Punnen