temporarily retrieve an image using the requests library

好久不见. 提交于 2019-11-30 22:02:56

You could skip saving to a temporary file part and use the corresponding response object directly to create the image:

#!/usr/bin/env python3
import urllib.request
from PIL import Image # $ pip install pillow

im = Image.open(urllib.request.urlopen(url))
print(im.format, im.mode, im.size)

Here's requests analog:

#!/usr/bin/env python
import requests # $ pip install requests
from PIL import Image # $ pip install pillow

r = requests.get(url, stream=True)
r.raw.decode_content = True # handle spurious Content-Encoding
im = Image.open(r.raw)
print(im.format, im.mode, im.size)

I've tested it with Pillow 2.9.0 and requests 2.7.0. It should work since Pillow 2.8.

You can write to a io.BytesIO:

import requests

from PIL import Image
from io import BytesIO

r = requests.get(self.url)
b = BytesIO(r.content)
size = 350, 350
img = Image.open(b)
img.thumbnail(size)
img.save("foo.thumbnail", "JPEG")
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!