[Image-SIG] parameters for Image.fromstring function in pil

bharath venkatesh bharathv6 at gmail.com
Thu Feb 14 07:22:46 CET 2008


hi
i need to do is modify the image in memory like resizing the image in memory
etc ... with out saving it disk as i have to return back the image  with out
saving it disk
PIL supports the use of StringIO objects being passed in place of file
objects.  StringIO objects are binary strings of variable length that are
kept
in memory so i saved the image in stringio objects the following code does
that

*for gif image**
*
import Image
import StringIO
im = Image.open("/home/bharath/Desktop/photos/lena.gif")
fil=StringIO.StringIO()
im.save(fil,"GIF")
cached_image=fil.getvalue()

or

*for jpeg image*
import Image
import StringIO
im = Image.open("/home/bharath/Desktop/photos/lena.jpg")
fil=StringIO.StringIO()
im.save(fil,"JPEG")
cached_image=fil.getvalue()

but i  can't apply resize operation on cached_image as it a str object
but i found out that Image.formstring(mode, size, data, decoder, parameters)
Creates an image memory from pixel data in a string so i did the following

*for gif image
*ima=Image.fromstring('P',(128,128),cached_image,'gif')
imr=ima.resize((64,64),Image.ANTIALIAS)
imr.save("/home/bharath/Desktop/photos/resize_lena3.gif","GIF")
*
*i am getting the following error

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/bharath/Desktop/image.py", line 8, in <module>
    ima=Image.fromstring('P',(128,128),cached_image,'gif')
  File "/usr/lib/python2.5/site-packages/PIL/Image.py", line 1744, in
fromstring
    im.fromstring(data, decoder_name, args)
  File "/usr/lib/python2.5/site-packages/PIL/Image.py", line 577, in
fromstring
    raise ValueError("cannot decode image data")
ValueError: cannot decode image data

*for jpeg image *
ma=Image.fromstring('P',(128,128),cached_image,'jpeg')
imr=ima.resize((64,64),Image.ANTIALIAS)
imr.save("/home/bharath/Desktop/photos/resize_lena3.gif","JPEG")

i am getting the following error ...

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/bharath/Desktop/image.py", line 8, in <module>
    ima=Image.fromstring('RGB',(128,128),cached_image,'jpeg')
  File "/usr/lib/python2.5/site-packages/PIL/Image.py", line 1744, in
fromstring
    im.fromstring(data, decoder_name, args)
  File "/usr/lib/python2.5/site-packages/PIL/Image.py", line 570, in
fromstring
    d = _getdecoder(self.mode, decoder_name, args)
  File "/usr/lib/python2.5/site-packages/PIL/Image.py", line 373, in
_getdecoder
    return apply(decoder, (mode,) + args + extra)
TypeError: function takes at least 3 arguments (1 given)

but if i remove the 4th parameter  that is decoder_name i.e 'gif' or 'jpeg'
in function Image.formstring(mode, size, data, decoder, parameters) there is
no error(when decoder_name is not given it defaults to raw image type) ..
image even gets resized and gets saved but that image is distorted image
that shows that it is not decoded in correct way .. and when i want a image
to be decoded according to a format i.e gif or jpeg i think  i need to pass
a extra parameter  in the  function  Image.fromstring(mode, size, data,
decoder, parameters) along with a decoder name to be decoded correctly .

pls can any one tell me what extra parameters i have to pass with an example
(taking my example itself )
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/image-sig/attachments/20080214/c537b6cd/attachment.htm 


More information about the Image-SIG mailing list