Thanks! That did it. The second part of my function is to drop the image in the StringIO buffer into a Tkinter canvas widget.
If I do this: self.imageBuffer.seek(0) image = Image.open(self.imageBuffer) self.picture1.create_image(0, 0, image = image ) self.picture1 = Canvas(self.pictureFrame,width=150,height=150) I get: Exception in Tkinter callback Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1410, in __call__ return self.func(*args) File "z.py", line 802, in changePicture1 self.picture1.create_image(0, 0, image = image ) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 2198, in create_image return self._create('image', args, kw) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 2189, in _create *(args + self._options(cnf, kw)))) TclError: image "<PngImagePlugin.PngImageFile image mode=RGB size=150x150 at 0x10F1227A0>" doesn't exist If I change the code to use the image rest from Image.open above to create a TkImage.PhotoImage, self.imageBuffer.seek(0) image = Image.open(self.imageBuffer) photo = PhotoImage(image) self.picture1.create_image(0, 0, image = photo ) I get yet a different exception: Exception in Tkinter callback Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1410, in __call__ return self.func(*args) File "z.py", line 803, in changePicture1 self.picture1.create_image(0, 0, image = photo ) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 2198, in create_image return self._create('image', args, kw) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 2189, in _create *(args + self._options(cnf, kw)))) TypeError: __str__ returned non-string (type instance) Not sure what I got wrong. Based on what I think I understand fro the man pages and some net searches, I think either case should be okay. On Apr 27, 2012, at 9:55 AM, Gareth Rees wrote: > Chris Hare wrote: >> okay - I have an error but I don't understand what I got wrong: >> >> self.imageBuffer = StringIO.StringIO() >> image = Image.open(filename) >> image = image.resize((150,150),Image.ANTIALIAS) >> image.save(self.imageBuffer, format= 'PNG') >> image = Image.open(self.imageBuffer) >> IOError: cannot identify image file >> >> The error occurs when trying to open the imageBuffer so I can work with the >> data in the buffer. What have I missed? > > You need to rewind to the start of the buffer before trying to read from it: > > self.imageBuffer.seek(0) > > -- > Gareth Rees _______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig