Bild mit Python-Pptx zentrieren

Überblick

Python-Pptx und Pillow (PIL) können verwendet werden, um ein Bild in die Mitte von PowerPoint einzufügen (zu zentrieren).

Hintergrund

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.

Umgebung

macOS Catalina Version 10.15.3 python3.7.0

Installation

pip install python-pptx
pip install Pillow

Code

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

Bild mit Python-Pptx zentrieren
Laden Sie Bilder automatisch mit Scraping herunter
Angrenzende Bilder mit Python Teil 1
Speichern Sie Bilder mit Web Scraping
Kombiniere zwei Bilder mit Django
Zahlenerkennung in Bildern mit Python
Bilder können mit Google_images_download nicht heruntergeladen werden
Veröffentlichen Sie mehrere Twitter-Bilder mit Python
Machen wir ein LGTM-Bild mit GIMP! (Python-Fu)
Vergleichen Sie zwei Bilder mit dem Bild-Hash
Arbeiten mit DICOM-Bildern in Python
Laden Sie Bilder mit Falcon hoch und laden Sie sie herunter
Multi-Class Multi-Label-Klassifizierung von Bildern mit Pytorch
Verstärken Sie Bilder für maschinelles Lernen mit Python
Bilder mit Pupil, Python und OpenCV aufnehmen
Fügen Sie mit Colaboratory japanische Schriftarten in Bilder ein
Generieren Sie mit Pillow (PIL) viele Einzelzeichenbilder.
Fügen Sie mit Pythonista Bilder zu iOS-Fotos hinzu
Transkription von Bildern mit der Vision API von GCP
[Python] Bilder mit OpenCV lesen (für Anfänger)
Fügen Sie Bildern mit Python2.7 Gaußsches Rauschen hinzu
Powerpo automatische Generierung mit Python-Pptx (persönliches Memo)
Importieren und Exportieren von GeoTiff-Bildern mit Python
Lesen von Zeichen in Bildern mit Python OCR
Laden Sie Bilder mit Python auf Google Drive hoch
Behandeln Sie transparente Bilder mit OpenCV-Make Sprites Dance-