PIL and requests don't get along

Roy Smith roy at panix.com
Wed Oct 24 09:35:55 EDT 2012


In article <mailman.2725.1351058163.27098.python-list at python.org>,
 Kushal Kumaran <kushal.kumaran+python at gmail.com> wrote:

> On 23 Oct 2012 14:06:59 -0400, roy at panix.com (Roy Smith) wrote:
> > I have a url from which I can get an image.  I want to use PIL to
> > manipulate that image.  Getting the image is easy:
> > 
> > >>> import requests
> > >>> r = requests.get(url)
> > 
> > There's a bunch of factory functions for Image, but none of them seem
> > to take anything that requests is willing to give you.  Image.new()
> > requires that you pass it the image size.  Image.open() takes a file
> > object, but
> > 
> > >>> Image.open(r.raw)
> > 
> > doesn't work because r.raw gives you a socket which doesn't support
> > seek().  I end up doing:
> > 
> > >>> r = requests.get(url)
> > >>> data = cStringIO.StringIO(r.content)
> > >>> image = Image.open(data)
> > 
> > which works, but it's gross.  Is there something I'm missing here?
> 
> That is pretty much what the requests module documentation says here:
> 
> http://docs.python-requests.org/en/latest/user/quickstart/#binary-response-con
> tent

Heh, I hadn't even noticed that.  I guess this is as good as it gets.



More information about the Python-list mailing list