Python-Pptx und Pillow (PIL) können verwendet werden, um ein Bild in die Mitte von PowerPoint einzufügen (zu zentrieren).
python-pptx ist eine Bibliothek, mit der Sie PowerPoint aus Python erstellen können. Dies ist sehr praktisch, aber wenn Sie ein Bild in eine Folie einfügen, können Sie nur die Einfügeposition in der oberen linken Koordinate des Bildes angeben. Ich wollte es zentrieren, war mir aber nicht sicher, ob es in python-pptx eine solche Option gibt. Daher wurde die Zentrierung realisiert, indem das Bild separat mit einer Bibliothek namens Pillow gelesen und die Bildgröße erfasst wurde.
macOS Catalina Version 10.15.3 python3.7.0
pip install python-pptx
pip install Pillow
from pptx import Presentation
from pptx.util import Inches
from PIL import Image
IMG_PATH = "/path/to/img_file"
IMG_DISPLAY_HEIGHT = Inches(3) #Die Höhe des Bildes bei Anzeige auf einer Folie. Stellen Sie es vorerst auf 3 Zoll ein.
SLIDE_OUTPUT_PATH = "test.pptx" #Schieben Sie den Ausgabepfad
#Objektdefinition schieben
prs = Presentation()
#Foliengröße abrufen
SLIDE_WIDTH = prs.slide_width #
SLIDE_HEIGHT = prs.slide_height
#Fügen Sie eine leere Folie hinzu
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
#Holen Sie sich die Bildgröße und das Seitenverhältnis
im = Image.open(IMG_PATH)
im_width, im_height = im.size
aspect_ratio = im_width/im_height
#Berechnen Sie die Größe des angezeigten Bildes
img_display_height = IMG_DISPLAY_HEIGHT
img_display_width = aspect_ratio*img_display_height
#Berechnen Sie die obere linke Koordinate des Bildes beim Zentrieren
left = ( SLIDE_WIDTH - img_display_width ) / 2
top = ( SLIDE_HEIGHT - img_display_height ) / 2
#Bild zur Folie hinzufügen
slide.shapes.add_picture(IMG_PATH, left, top, height = IMG_DISPLAY_HEIGHT)
#Folie ausgeben
prs.save(SLIDE_OUTPUT_PATH)
Mit dem obigen Code können Sie eine Power-Post-Folie erstellen, wobei die Abbildung wie unten gezeigt zentriert ist. (Das Testbild wurde vom Autor aufgenommen)
Der Kissenteil kann beliebig sein, solange das Seitenverhältnis des Originalbilds berechnet werden kann, sodass stattdessen beispielsweise opencv verwendet werden kann. Laut der Dokumentation hat python-pptx eine Klasse namens Image, die eine size-Eigenschaft hat, und es scheint, dass Sie die Größe daraus abrufen können, aber ich wusste nicht, wie es geht. Es ist nicht klug, Pillow nur zu verwenden, um die Bildgröße zu ermitteln. Wenn also jemand weiß, wie man es mit Python-pptx alleine macht, würde ich es begrüßen, wenn Sie es mir beibringen könnten.
Das ist alles für diesen Artikel. Vielen Dank, dass Sie so weit gelesen haben.
Recommended Posts