2016-10-20 6 views
1

ich eine PPTX-Datei mit Python pptx Paket (Python 2,7)Python pptx hinzufügen Bild ohne Bilddatei

Ich habe ein Bild im Speicher erstellen, die i matplotlib mit diesem Code erstellen:

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() 

Später ich versuche, dieses Bild zu der pPTX-Datei hinzufügen

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

mit und erhalten die folgenden Fehler: Attribute: ‚Figur‘ Objekt kein Attribut ‚lesen‘

Der Code funktioniert, wenn ich das Bild in eine Datei speichern und dann in die Pptx-Datei mit dem Pfad mit genau dem gleichen Code lesen. adding image file to pptx file

Ich fand nur, wie eine Bilddatei zum pptx hinzuzufügen, und nichts über Bild aus dem Speicher hinzugefügt wird.

Ich muss es hinzufügen, ohne eine Datei auf der Festplatte zu speichern.

Danke!

Antwort

2

Sie können es in einem speicherinternen StringIO-Stream (einem "dateiähnlichen Objekt") speichern und das StringIO-Objekt an python-pptx übergeben.

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 

Diese beiden anderen Fragen haben zusätzliche Details.

+0

könnten Sie bitte ausführlich die Antwort so ich in der Lage sein wird, sie zu akzeptieren? – thebeancounter

+0

@captainshai Ich habe ein expliziteres Code-Snippet hinzugefügt – scanny

Verwandte Themen