[Image-SIG] Using PIL to display resized images over the web
Steven M. Castellotti
SteveC at innocent.com
Wed Oct 8 19:58:44 EDT 2003
Chris-
Many thanks for the tip. I had never used StringIO before, so after a
little research I was able to figure out what I needed to know. For the
sake of the list archive, here's sample code for the answer to my
question:
#!/usr/bin/env python
import Image, cStringIO
sample_image = '/archive/sample.jpg' # The physical image path
file = open(sample_image, 'r')
im = Image.open(file)
format = im.format # remember to maintain image format when saving
im = im.resize((640, 480))
file_out = cStringIO.StringIO()
im.save(file_out, format)
file_out.reset()
print "Content-Type: image/jpeg\n"
print file_out.read()
file_out.close()
file.close()
Cheers
-Steve Castellotti
SteveC (at) Innocent.com
http://www.deltaflux.org
On Thu, 2003-10-09 at 12:06, Chris Cogdon wrote:
> On Wednesday, Oct 8, 2003, at 15:49 US/Pacific, Steven M. Castellotti
> wrote:
>
> > Hey all--
> >
> > I have a simple photo website written in python. I would like to be
> > able to use Python Imaging Library to read an image file from the disk,
> > resize/thumbnail it in memory, and then print the modified image
> > (sending it to the client web browser after the proper MIME headings).
> >
> > Currently, I have only managed to do this via Image.save() to a
> > temporary file and then sending that, but of course that is somewhat
> > inefficient. Surely there's an easier way to do this, perhaps via file
> > descriptors?
>
> the 'save' method can take a string or a file object. If you pass a
> string it will 'open' that file and write the image to it. If you pass
> a file object, it will simply write to that file object.
>
> So... if you want to save it into a string for later processing, create
> a StringIO object and pass it to the save method.
>
More information about the Image-SIG
mailing list