2016-10-20 3 views
1

я создаю файл PPTX с использованием пакета питона PPTX (питон 2,7)питон PPTX добавить изображение без файла изображения

У меня есть изображение в памяти, что я создаю, используя Matplotlib с этим кодом:

import matplotlib.pyplot as plt 

plt.clf() 

plt.imshow(data, cmap='hot', interpolation='nearest') 
plt.xlabel(x_l) 
plt.ylabel(y_l) 
plt.title(title) 

x_values = range(len(times)) 

plt.xticks(x_values[::len(x_values)/24], range(24)) 

plt.yticks(range(len(dates)),dates) 
plt.axes().set_aspect('auto') 

return plt.gcf() 

Позже я пытаюсь добавить это изображение в файл PPTX, используя

pic = shapes.add_picture(image, left,top = top, width= width, height = height) 

и получить следующее сообщение об ошибке: AttributeError: объект «Рисунок» не имеет атрибута «читать»

Код работает, если я сохраняю изображение в файле, а затем прочитал его в файле pptx с помощью пути с точно таким же кодом. adding image file to pptx file

Я нашел только, как добавить файл изображения в pptx, и ничего не добавлять изображение из памяти.

Мне нужно добавить его без сохранения файла на диск.

Спасибо!

ответ

2

Вы можете сохранить его в потоке StringIO в памяти («файл-подобный объект») и передать объект StringIO в python-pptx.

import StringIO 

image_stream = StringIO.StringIO() 
image.save(image_stream) 
pic = shapes.add_picture(image_stream, left, top, width, height) 
image_stream.close() # probably optional, but couldn't hurt 

Эти два других вопроса имеют дополнительную информацию.

+0

вы могли бы, пожалуйста, подробно ответ так что я буду иметь возможность принять его? – thebeancounter

+0

@captainshai Я добавил более явный фрагмент кода – scanny

Смежные вопросы