这是从Python 3中的URL获取图像的正确方法吗?

时间:2015-03-15 18:58:18

标签: python-3.x urllib pillow

我需要在Python中检索一个URL并将其作为Pillow图像。

from PIL import Image
from io import BytesIO
import urllib.request
Image.open(
    BytesIO(
        urllib.request.urlopen('http://skins.minecraft.net/MinecraftSkins/{}.png'.format('Notch')).read()
    )
)

这似乎是一种相当迂回的方式(获取图像,以字节读取,将字节转换为BytesIO对象,然后将其作为图像打开)。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

每条评论——不;这就是文档甚至建议的内容!

<块引用>

如果您在字节串中有整个图像,请将其包装在 BytesIO 对象中,然后使用 PIL.Image.open() 加载它。


尽管如此,从 Python 3.5 开始,即使这样也是不必要的,因为 HTTPResponses are already buffered(这也适用于 other URL libraries,例如 requestsurllib3):

from PIL import Image
import urllib.request

url = input('Enter an image URL:\n> ')

im = Image.open(urllib.request.urlopen(url))
im.show()