Попытка отобразить изображения с помощью PIL и BytesIO, но ничего не возвращает

Я пытаюсь отобразить логотипы из набора данных. Набор данных выглядит так:

Player      Club Logo        
tom         https://abc.png
jerry       https://def.png
peter       https://frf.png
woody       https://awt.png

Однако он не вернул мне никаких логотипов. Все, что он показал, это 4 пустых квадрата сетки. Мой код ниже. Я тоже пытался использовать im = Image.open(BytesIO(r.content)).show(), но вместо этого логотипы открывались на моем компьютере.

import matplotlib.pyplot as plt
import requests

from PIL import Image
from io import BytesIO

fig, ax = plt.subplots(2,2, figsize=(2,2))

for i in range(4):
    r = requests.get(df['Club Logo'][i])
    im = Image.open(BytesIO(r.content))

plt.show()

Спасибо


person Jonathan    schedule 08.01.2020    source источник
comment
Решил ли мой ответ вашу проблему? Если да, то примите его в качестве своего ответа, щелкнув пустую галочку / галочку рядом с подсчетом голосов. Если нет, скажите, что не сработало, чтобы я или кто-то еще мог вам помочь. Спасибо. meta.stackexchange. ru / questions / 5234 /   -  person Mark Setchell    schedule 27.01.2020


Ответы (1)


Начиная с этих изображений:

"0.png":

введите здесь описание изображения

"1.png":

введите здесь описание изображения

"2.png":

введите здесь описание изображения

"3.png":

введите здесь описание изображения

Я думаю, вы этого хотите:

#!/usr/bin/env python3

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(2,2, figsize=(2,2))

for i in range(4): 
    # Load image and make into Numpy array
    im = Image.open(f'{i}.png').convert('RGB') 
    na = np.array(im) 
    # Shove into the plot
    ax[i%2][i//2].imshow(na) 

fig.show()

введите здесь описание изображения

person Mark Setchell    schedule 08.01.2020
comment
привет Марк, спасибо за помощь! Мне просто интересно, эта строка im = Image.open (f '{i} .png'). Convert ('RGB') ... означает ли f {i} файл? Я попробовал, но он вернул мне [Errno 2] Нет такого файла или каталога: '0.png'. - person Jonathan; 09.01.2020
comment
Я использовал этот im = Image.open (BytesIO (r.content)). convert ('RGB') и мне удалось получить 3 из 4 изображений, хотя 1 сетка все еще черная. - person Jonathan; 09.01.2020
comment
Вероятно, это как-то связано с вашими URL-адресами. Я хочу сказать, что в вашем исходном коде отсутствуют две строки na = np.array(im) и ax[i%2][i//2].imshow(na), которые фактически помещают изображения в сюжет. - person Mark Setchell; 09.01.2020