【发布时间】:2021-10-06 06:32:12
【问题描述】:
我需要通过 URL 获取图像,并且不将图像保存在本地 base64 编码为字符串,然后通过 URL 作为 api 调用过去。如果我可以在本地保存文件,我可以做到这一点:
with open(photo.jpg, "rb") as file:
image = [base64.b64encode(file.read()).decode("ascii")]
经过一些研究,我认为我找到了一种无需保存即可完成以下操作的方法:
URL = 'http://www.w3schools.com/css/trolltunga.jpg'
with urllib.request.urlopen(URL) as url:
f = io.BytesIO(url.read())
image = base64.b64encode(f.read()).decode("ascii")
但是我得到以下错误:
Traceback (most recent call last):
File "C:\Users\rich2\Documents\Python\get_image_stream\app3.py", line 13, in <module>
image = base64.b64encode(img.read()).decode("ascii")
File "C:\Users\Documents\Python\get_image\venv\lib\site-packages\PIL\Image.py", line 546, in __getattr__
raise AttributeError(name)
AttributeError: read
我显然遗漏了一些东西,但在任何地方都找不到可行的答案。
【问题讨论】:
-
欢迎来到堆栈溢出。哪一行是
line 13?代码块显示image = base64.b64encode(f.read()).decode("ascii"),跟踪显示用img.read()发现的故障。
标签: python python-3.x base64 urllib