Преобразование байтового объекта изображения Plotly в массив numpy - PullRequest
1 голос
/ 27 мая 2020

Функция plotly.io.to_image используется для возврата изображения в виде байтового объекта ( Do c).

Я хочу преобразовать этот байтовый объект представляющий изображение PNG, в массив numpy, чтобы его можно было использовать в Folium в качестве наложения изображений.

Вот пример:

import plotly.graph_objects as go
# Create plot
fig = go.Figure(data =
    go.Contour(
        z=[[10, 10.625, 12.5, 15.625, 20],
           [5.625, 6.25, 8.125, 11.25, 15.625],
           [2.5, 3.125, 5., 8.125, 12.5],
           [0.625, 1.25, 3.125, 6.25, 10.625],
           [0, 0.625, 2.5, 5.625, 10]]
    ))
# Export byte object
img_bytes = fig.to_image(format="png",width=600, height=350)

Я пробовал использовать PIL:

from PIL import Image
img = Image.frombytes("RGB", (350,600), img_bytes)

Получение ValueError: not enough image data.

Я никогда не использовал байтовый объект, прежде чем этот процесс сильно запутал меня.


PS: Любой Также приветствуется другой способ использования графического изображения на карте листов.

1 Ответ

1 голос
/ 28 мая 2020

Получил рабочий ответ на Форумы Plotly :

Это функция, которая преобразует изображение Plotly fig в массив:

import io 
from PIL import Image

def plotly_fig2array(fig):
    #convert Plotly fig to  an array
    fig_bytes = fig.to_image(format="png")
    buf = io.BytesIO(fig_bytes)
    img = Image.open(buf)
    return np.asarray(img)

...