从 Python 中的 HTTPResponse 读取 URL 图像内容
Reading URL image content from HTTPResponse in Python
我有一张图像 URL,格式为可共享 Google Drive link,我想在我的 Python 脚本中访问它。以下是我一直在尝试的:
from PIL import Image
import requests
img = Image.open(requests.get(URL).raw)
不过我知道这个 returns 是一个 HTTPResponse。我已经咨询了 this and thread 无济于事。如何删除 URL 中的所有其他内容并只保留图像?
修改点:
- 在您
https://drive.google.com/file/d/###fileId###/view?usp=sharing
的 URL 中,此文件未公开共享。当您想使用此文件的URL时,请公开分享。
“webViewLink”的 https://drive.google.com/file/d/###fileId###/view?usp=sharing
不是直接 link。在这种情况下,请使用 https://drive.google.com/uc?export=download&id=###fileId###"
. 之类的“webContentLink”
- 我认为需要将
Image.open(requests.get(URL).raw)
的requests.get(URL).raw
修改为BytesIO。
当这些点体现在你的脚本中,就变成了下面这样。
修改后的脚本:
请将 https://drive.google.com/uc?export=download&id=###fileId###
的 ###fileId###
替换为您的文件 ID。
from PIL import Image
import requests
import io
URL = "https://drive.google.com/uc?export=download&id=###fileId###"
img = Image.open(io.BytesIO(requests.get(URL).content))
print(img.format, img.size, img.mode)
- 我可以确认当
https://drive.google.com/uc?export=download&id=###fileId###
的文件被公开共享时,该脚本有效。
参考:
我有一张图像 URL,格式为可共享 Google Drive link,我想在我的 Python 脚本中访问它。以下是我一直在尝试的:
from PIL import Image
import requests
img = Image.open(requests.get(URL).raw)
不过我知道这个 returns 是一个 HTTPResponse。我已经咨询了 this and
修改点:
- 在您
https://drive.google.com/file/d/###fileId###/view?usp=sharing
的 URL 中,此文件未公开共享。当您想使用此文件的URL时,请公开分享。
“webViewLink”的 https://drive.google.com/file/d/###fileId###/view?usp=sharing
不是直接 link。在这种情况下,请使用https://drive.google.com/uc?export=download&id=###fileId###"
. 之类的“webContentLink”
- 我认为需要将
Image.open(requests.get(URL).raw)
的requests.get(URL).raw
修改为BytesIO。
当这些点体现在你的脚本中,就变成了下面这样。
修改后的脚本:
请将 https://drive.google.com/uc?export=download&id=###fileId###
的 ###fileId###
替换为您的文件 ID。
from PIL import Image
import requests
import io
URL = "https://drive.google.com/uc?export=download&id=###fileId###"
img = Image.open(io.BytesIO(requests.get(URL).content))
print(img.format, img.size, img.mode)
- 我可以确认当
https://drive.google.com/uc?export=download&id=###fileId###
的文件被公开共享时,该脚本有效。