PIL and requests don't get along

Kushal Kumaran kushal.kumaran+python at gmail.com
Wed Oct 24 01:55:53 EDT 2012


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-content

-- 
regards,
kushal



More information about the Python-list mailing list