从 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### 的文件被公开共享时,该脚本有效。

参考: