[Zope] PIL Question

J. Joy kyroraz@yahoo.com
Mon, 13 May 2002 10:22:07 -0700 (PDT)


Thanks :)

And considering the lack of material based on this information, I'd be happy to 
make a brief how-to on this matter. :)

Jason


--- foohbah <foohbah@netscape.net> wrote:
> Ah. I see.
> To solve this, I made this very simple fakefile object:
> 
> class FakeFile:
>      '''
>      memory map equivalent of a real file
>      '''
>      def __init__(self):
>          self.contents = []
> 
>      def write(self,s):
>          self.contents.append(s)
> 
>      def read(self):
>       return string.join(self.contents,'')
> 
> 
> and I tell PIL to write to it - the write method takes any file like 
> object - as long as it has a write method. The code (where ldp is a PIL 
> canvas) sort of looks like:
> 
>      fakef = FakeFile()
>      ldp.writeimage(fakef,'jpeg')
> 
> I then return fakef.read() from my external method as the binary image.
> 
> Does that help?
> 
> When you've finished, please write this up as a howto if you have time?
> 
> cheers..
> 
> J. Joy wrote:
> 
> > 
> > 
> >   Ross Lazarus <do_not_reply_to_this@bellatlantic.net> wrote:
> > 
> >     the img tag expects the server to deliver an existing image file from
> >     somewhere. What you need to do is a little more complex (!). You COULD
> >     write the image into a zope object (bad idea for lots of reasons - eg
> >     zodb bloat) or to a localFS (better but still sucky) and deliver it
> >     from
> >     there using an img tag. AFAIK, this is the ONLY way to embed your image
> >     into a page with text and stuff.
> > 
> > This is not a problem.  In the HTML example of how this is called, I may 
> > not have shown
> > clearly enough that what I want to do is have the src be an object in 
> > the same folder that
> > would generate this image upon calling it and the external python method 
> > would generate
> > and return the image back.  The part that I am having trouble with is 
> > with the return part of
> > my external method.  I do not know how to make it return the data of the 
> > image that was just
> > generated.  I can save it to a file, but I can't find a nice way of 
> > returning the image data back
> > from the call.  I searched for a few hours to try to find some practical 
> > examples of perhaps
> > how to do this on google, but nothing came up. 
> > 
> > To wit, the External Call should act like a image when referenced, it's 
> > just having "stuff" passed to
> > it to form the image in question. :)
> > 
> > The External Call would be called like:
> > 
> > <img src="MakeImage">
> > 
> > Where MakeImage would be the External Method.
> > 
> > 
> >  >
> >  > I'm trying to create an external method that will take variables that 
> > exist in a ZSQL call and will output an image
> >  >
> >  > based on that:
> >  >
> >  > import Image, ImageDraw, StringIO, os.path
> >  >
> >  > def PILtest():
> >  > image = Image.new('RGB',[25,25])
> >  > ## IMage Stuff Happens here!
> >  > return image
> >  >
> >  > Where this would occur in a DTML-Method of:
> >  >
> >  >
> >  > <http://us.f149.mail.yahoo.com/ym/PILtest>
> >  >
> >  >
> >  > But I can't get PILtest to output the image itself. Save() doesn't 
> > seem to be of help directly. Anyone have any suggestions?
> >  >
> 
> 


__________________________________________________
Do You Yahoo!?
LAUNCH - Your Yahoo! Music Experience
http://launch.yahoo.com