小编Ras*_*taf的帖子

Python PIL"IOError:图像文件被截断",带有大图像

我认为这个问题与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).
Run Code Online (Sandbox Code Playgroud)

我从相机测试了很多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)
Run Code Online (Sandbox Code Playgroud)

因为我正在使用PUT_factory,所以我没有文件对象,我使用的是工厂的原始数据或以前创建的(Zope)Image对象.

我听说PIL在超过一定大小时处理图像数据的方式不同,但我不知道如何调整代码.或者它与PIL的延迟加载有关?

python zope image python-imaging-library

54
推荐指数
4
解决办法
4万
查看次数

Zope:无法访问属性装饰器下的REQUEST

我正在尝试在类中使用属​​性装饰器.虽然它本身很好用,但我不能使用任何必须访问的代码REQUEST.

class SomeClass():
   #Zope magic code
   _properties=({'id':'someValue', 'type':'ustring', 'mode':'r'},)

  def get_someValue(self):
    return self.REQUEST

  @property
  def someValue(self):
    return self.REQUEST
Run Code Online (Sandbox Code Playgroud)

虽然打电话get_someValue让我得到了理想的结果,但试图访问someValue会引发一个问题AttributeError.

这种行为背后的逻辑是什么?有没有办法解决这个限制?

(我使用的是Zope 2.13.16,Python 2.7.3)

python zope properties request

6
推荐指数
1
解决办法
224
查看次数

使用元组或列表,string.join会更快吗?

如果我可以选择

''.join( ['a', 'b'] )
Run Code Online (Sandbox Code Playgroud)

''.join( ('a', 'b') )
Run Code Online (Sandbox Code Playgroud)

我应该使用哪一个(哪一个更快)?有关系吗?

python string join tuples list

2
推荐指数
1
解决办法
336
查看次数