python-3.x - 这是在 Python 3 中从 URL 获取图像的正确方法吗?

标签 python-3.x python-imaging-library urllib

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

from PIL import Image
from io import BytesIO
import urllib.request

url = input('Enter an image URL:\n> ')
r = urllib.request.urlopen(url)
imdata = r.read()
imdata_wrapper = BytesIO(imdata)
im = Image.open(imdata_wrapper)

im.show()

这似乎是一种相当迂回的方式(获取图像,将其数据读出到 blob 中,将所述 blob 转换为 BytesIO 对象,然后,最后,打开图像等).

有没有更好的办法?

最佳答案

根据评论——不;这就是文档的建议!

If you have an entire image in a bytestring, wrap it in a BytesIO object, and use PIL.Image.open() to load it.


不过,从 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> ')

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

im.show()

关于python-3.x - 这是在 Python 3 中从 URL 获取图像的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29064829/

相关文章:

python - 替换字符串中的多个特定字符

python - PIL 无法处理此数据类型

python - 在 python 中更新/添加 url 中的用户名

python - 使用 pdfminer.six 从 URL 打开 PDF

Python:URLError:<urlopen 错误 [Errno 10060]

python - 如何从列表中删除项目并将其存储到Python中的变量中

python - 在函数中定义字典时Python中的内存泄漏

python - 无法有效删除 ‘v’ 之前的字符串或删除 v 及之后的字符串

python - 如何使用 Python PIL (Pillow) 将图像保存在特定文件目录中,而不会因 : save_handler = SAVE[format. upper() 而出现 KeyError]

python - 在 Django 中使用 PIL 的图像水印