[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