[Zope] Using PIL in zope product
John Schinnerer
johnschinnerer at yahoo.com
Tue Dec 28 02:36:18 EST 2004
Hello,
I am developing an art-gallery type of product, with images of artworks
stored as zope Image objects within a folderish product instance.
When a new gallery item instance is created, or when the Image object
in an existing instance is changed, I want to auto-generate a thumbnail
of the image (using PIL) and store it also as a zope Image object.
In manage_addAction for example I have this:
...
imgfile = REQUEST.image_file
if imgfile and imgfile.filename != '':
newObjId.manage_addImage('art_piece', imgfile, newObjId.title)
newObjId.manage_addImage('art_piece_thumb', makeThumb(imgfile),
newObjId.title)
...
and here is makeThumb (using PIL):
def makeThumb(imagefile):
"create thumbnail image from full-size art_piece image"
img = Image.open(imagefile)
thumb = img.thumbnail((111,111), Image.ANTIALIAS)
return thumb
I get a zope error triggered by the line
img = Image.open(imagefile)
like this:
Error Type: AttributeError
Error Value: FileUpload instance has no attribute '__getitem__'
(traceback further below if helpful)
So apparently there is some problem with trying to use the image file
passed in the request with the PIL functions...it's not a "real" file
or at least doesn't have some attributes that PIL is expecting to find,
or something like that.
Is there a simple way around this the way I'm trying to do it?
If not, how else could I try to get the same result (a zope Image
object thumbnail image created from the 'full size' image being
uploaded in the request)?
thanks,
John S.
---------------
Traceback (innermost last):
File /usr/lib/zope/lib/python/ZPublisher/Publish.py, line 150, in
publish_module
File /usr/lib/zope/lib/python/ZPublisher/Publish.py, line 114, in
publish
File /usr/lib/zope/lib/python/Zope/__init__.py, line 159, in
zpublisher_exception_hook
(Object: bg)
File /usr/lib/zope/lib/python/ZPublisher/Publish.py, line 98, in
publish
File /usr/lib/zope/lib/python/ZPublisher/mapply.py, line 88, in
mapply
(Object: add_GTIGalleryItem)
File /usr/lib/zope/lib/python/ZPublisher/Publish.py, line 39, in
call_object
(Object: add_GTIGalleryItem)
File /usr/lib/zope/lib/python/Shared/DC/Scripts/Bindings.py, line
252, in __call__
(Object: add_GTIGalleryItem)
File /usr/lib/zope/lib/python/Shared/DC/Scripts/Bindings.py, line
283, in _bindAndExec
(Object: add_GTIGalleryItem)
File /usr/lib/zope/lib/python/Products/PythonScripts/PythonScript.py,
line 302, in _exec
(Object: add_GTIGalleryItem)
(Info: ({'script': <PythonScript instance at 892f4c0>,
'context': <Folder instance at 8988608>, 'container': <Folder
instance at 8b8d860>, 'traverse_subpath': []}, (), {}, None))
File Script (Python), line 11, in add_GTIGalleryItem
File
/usr/lib/zope/lib/python/Products/GTIGalleryItem/GTIGalleryItem.py,
line 98, in manage_addAction
File
/usr/lib/zope/lib/python/Products/GTIGalleryItem/GTIGalleryItem.py,
line 71, in makeThumb
File /usr/lib/python2.1/site-packages/PIL/Image.py, line 984, in open
File /usr/lib/zope/lib/python/App/ImageFile.py, line 35, in __init__
File /usr/lib/python2.1/posixpath.py, line 48, in join
AttributeError: (see above)
__________________________________
Do you Yahoo!?
Dress up your holiday email, Hollywood style. Learn more.
http://celebrity.mail.yahoo.com
More information about the Zope
mailing list