> You can't do this....
> What you need to do is associate the image with a URL so it gets
> generated when the browser processes the <img> tag.. UNLESS it's very small
> in which case you can use the src="..." attribute to contain the data.
> So a PIL image should be returned by a script or external method that
> you can browse to. Headers such as Content-Type should be set to set the
> image type.
> Instead of generating the image on the call to your ZPT you form an <img
> src="/some/url/that/makes/my/image?foo=bar&baz=bat"> e.g. in order to
> generate the right image.

Hi Andrew

thank you for your answer.
I tried this but calling the page template only shows the image and the 
other content is not shown. I guess, it has something to do with the 
REQUEST.RESPONSE.setHeader('Content-Type', WEB_FORMAT) I set in the 
external method.

Here is the code I use:

External method "createThumbnail":
def createThumbnail(self, photo):
     """ create PIL image
     thumb_data = StringIO()
     # 'thumb' is a PIL.Image.Image instance
     thumb.save(thumb_data, 'JPEG')

     REQUEST.RESPONSE.setHeader('Content-Type', 'JPEG')
     return REQUEST.RESPONSE.write(thumb_data.getvalue())

Page Template "thumbnails.html":
<p>some other content...</p>
<tal:rep tal:repeat="photo photos">
  <a tal:attributes="href photo/absolute_url;">
    <img tal:attributes="src python: container.createThumbnail(photo)" />
<p>some other content...</p>

In the page templates I iterate over a list of image objects ("photos") 
and pass a single image object to external method.
As I mentioned above, this only shows the first image and not the other 
content nor the other images.

Did I miss something?

Zope maillist  -  Zope@zope.org
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to