如何从Python中读取URL中的图像数据?
当我们处理本地文件时,我正在尝试做的事情相当简单,但是当我尝试使用远程URL执行此操作时会出现问题。
基本上,我正在尝试从URL中提取的文件中创建PIL图像对象。 当然,我总是可以获取URL并将其存储在临时文件中,然后将其打开到图像对象中,但这样效率非常低。
这就是我所拥有的:
Image.open(urlopen(url))
它散开了抱怨seek()不可用,所以我试过这个:
Image.open(urlopen(url).read())
但这也不起作用。 有没有更好的方法来做到这一点,或者写一个临时文件是可接受的做这种事情的方式?
8个解决方案
166 votes
你可以尝试使用StringIO
import urllib, cStringIO
file = cStringIO.StringIO(urllib.urlopen(URL).read())
img = Image.open(file)
Fábio Diniz answered 2019-06-06T22:19:02Z
163 votes
在Python3中,StringIO和cStringIO模块已经消失。
在Python3中你应该使用:
from PIL import Image
import requests
from io import BytesIO
response = requests.get(url)
img = Image.open(BytesIO(respon