使用 PIL 出现无法识别的图像错误

问题描述 投票:0回答:1

我一直在尝试使用 PIL 打开以下狗的维基百科图像。我尝试过以下方法。

from PIL import Image
import requests
from io import BytesIO

url = "https://upload.wikimedia.org/wikipedia/commons/3/36/Dog_.jpg"
response = requests.get(url)
im = Image.open(requests.get(url, stream=True).raw)

我想知道是什么原因导致了错误以及是否有任何解决方法?

python-imaging-library
1个回答
0
投票

如果您查看维基媒体返回给您的状态代码和页面,您会看到它报告错误,因为您没有为

User-Agent
设置合理的值,这使它认为您可能是一个狡猾的演员。

response = requests.get(url)
print(f'{response.status_code=}')

输出:

 response.status_code=403

解决方案是设置一个有效的

User-Agent
:

from PIL import Image
import requests
from io import BytesIO

# Define URL and User-Agent
url = "https://upload.wikimedia.org/wikipedia/commons/3/36/Dog_.jpg"
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}

# Download image
response = requests.get(url, headers=headers)

# Open with Pillow
im = Image.open(BytesIO(response.content))
© www.soinside.com 2019 - 2024. All rights reserved.