I have been trying for several days now to create thumbnails in Zope. I ended up looking at the example code at: http://www.zope.org/Members/michel/ZB/ScriptingZope.html I am not sure how current this document is, but I tried to use the thumbnail script with no success. After many frustrating hours I found the following changes worked: def makeThumbnail(self, original_id, size=128): """ Makes a thumbnail image given an image Id when called on a Zope folder. The thumbnail is a Zope image object that is a small JPG representation of the original image. The thumbnail has a 'original_id' property set to the id of the full size image object. """ from PIL import Image -- from cStringIO import StringIO ++ from StringIO import StringIO <=I cant seem to get cStringIO to work import os.path # create a thumbnail image file original_image=getattr(self, original_id) -- original_file=StringIO(original_image.data) ++ original_file=StringIO(str(original_image.data)) <=needed to ensure string image=Image.open(original_file) image=image.convert('RGB') image.thumbnail((size,size)) thumbnail_file=StringIO() image.save(thumbnail_file, "JPEG") thumbnail_file.seek(0) # create an id for the thumbnail path, ext=os.path.splitext(original_id) thumbnail_id=path + '.thumb.jpg' # if there's and old thumbnail, delete it if thumbnail_id in self.objectIds(): -- self.manage_delObject(thumbnail_id) <= this does not work ++ self.manage_delObjects([thumbnail_id]) # create the Zope image object self.manage_addProduct['OFSP'].manage_addImage(thumbnail_id, thumbnail_file, 'thumbnail image') thumbnail_image=getattr(self, thumbnail_id) # set the 'originial_id' property thumbnail_image.manage_addProperty('original_id', original_id, 'string') I have no idea if these are errors or if things have changed. I am using Zope 2.3.2 and Python 1.5.2 on FreeBSD 4.0. I just thought I should report what I have found and hopefully save someone else the pain Tom