PIL: reading bytes from Image

Larry Bates lbates at websafe.com
Mon Mar 12 15:22:25 CET 2007


cyberco wrote:
> Thanks,
> 
> I've tried the StringIO option as follows:
> 
> =================================
> img = Image.open('/some/path/img.jpg')
> img.thumbnail((640,480))
> file = StringIO, StringIO()
> img.save(file, 'JPEG')
> 
> =================================
> 
> But it gives me:
> 
> =================================
> 
> exceptions.TypeError                                 Traceback (most
> recent call last)
> 
> C:\Python24\lib\site-packages\PIL\Image.py in save(self, fp, format,
> **params)
>    1303
>    1304         try:
> -> 1305             save_handler(self, fp, filename)
>    1306         finally:
>    1307             # do what we can to clean up
> 
> C:\Python24\lib\site-packages\PIL\JpegImagePlugin.py in _save(im, fp,
> filename)
>     407         )
>     408
> --> 409     ImageFile._save(im, fp, [("jpeg", (0,0)+im.size, 0,
> rawmode)])
>     410
>     411 def _save_cjpeg(im, fp, filename):
> 
> C:\Python24\lib\site-packages\PIL\ImageFile.py in _save(im, fp, tile)
>     464     bufsize = max(MAXBLOCK, im.size[0] * 4) # see RawEncode.c
>     465     try:
> --> 466         fh = fp.fileno()
>     467         fp.flush()
>     468     except AttributeError:
> 
> TypeError: descriptor 'fileno' of 'file' object needs an argument
> =================================
> 
> It looks similar to the code in Sparklines except for the fact that
> the latter creates an Image from scratch.
> 
> 2B
> 
>> Saving the image, in a
>> format your client understands, to a file like object like
>> StringIO.StringIO is an easy path to take.
>>
>> Sparklines shows this in action:
>>
>> http://bitworking.org/projects/sparklines/
>>
>> max
> 
> 
If it hasn't already bitten you it will: It is a BAD idea to use
'file' as a variable name.  If you do, you mask the built-in file
function.  That is why most people use fp or something else.

-Larry



More information about the Python-list mailing list