Как вернуть изображение из функции, используя BytesIO? - PullRequest
0 голосов
/ 22 апреля 2020

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

def plot_Data():
    plot = plot some figure

    buf = io.BytesIO()
    fig = plot.get_figure()
    fig.savefig(buf, format='png', dpi=100)
    buf.seek(0)

    return buf

imgData = io.BytesIO()
imgData = plot_Data()
im = xl.drawing.image.Image(imgData)

Когда я пытаюсь описать выше, я получить следующую ошибку:

--> 169         im = xl.drawing.image.Image(imgData)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\openpyxl\drawing\image.py in __init__(self, img)
     30         self.ref = img
     31         mark_to_close = isinstance(img, str)
---> 32         image = _import_image(img)
     33         self.width, self.height = image.size
     34 

~\AppData\Local\Continuum\anaconda3\lib\site-packages\openpyxl\drawing\image.py in _import_image(img)
     14 
     15     if not isinstance(img, PILImage.Image):
---> 16         img = PILImage.open(img)
     17 
     18     return img

~\AppData\Local\Continuum\anaconda3\lib\site-packages\PIL\Image.py in open(fp, mode)
   2770         fp.seek(0)
   2771     except (AttributeError, io.UnsupportedOperation):
-> 2772         fp = io.BytesIO(fp.read())
   2773         exclusive_fp = True
   2774 

AttributeError: 'NoneType' object has no attribute 'read'

Как я могу вернуть объект BytesIO из функции и правильно прочитать его вне функции?

...