如何从Python的URL中读取图像数据?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (139)

当我们处理本地文件时,我想要做的事情相当简单,但是当我尝试使用远程URL来完成这个任务时,问题就出现了。

基本上,我试图从一个从URL中提取的文件中创建一个PIL图像对象。当然,我总是可以获取URL并将其存储在临时文件中,然后将其打开到图像对象中,但这感觉非常低效。

以下是我的代码:

Image.open(urlopen(url))

seek()没有,所以我试了一下:

Image.open(urlopen(url).read())

但这也没用。是否有更好的方法来做这件事,或者将这种事情写到临时文件中是被接受的方式?

提问于
用户回答回答于

您可以尝试使用StringIO

import urllib, cStringIO

file = cStringIO.StringIO(urllib.urlopen(URL).read())
img = Image.open(file)
用户回答回答于

在Python 3中,StringIO和cStringIO模块已经消失。

在Python 3中,您应该使用:

from PIL import Image
import requests
from io import BytesIO

response = requests.get(url)
img = Image.open(BytesIO(response.content))

扫码关注云+社区

领取腾讯云代金券