python-pptx et Pillow (PIL) peuvent être utilisés pour insérer (au centre) une image au centre de PowerPoint.
python-pptx est une bibliothèque qui vous permet de créer PowerPoint à partir de python. C'est très pratique, mais lorsque vous insérez une image dans une diapositive, vous ne pouvez spécifier la position d'insertion que dans la coordonnée supérieure gauche de l'image. Je voulais le centrer, mais je n'étais pas sûr qu'il y ait une telle option dans python-pptx. Par conséquent, le centrage a été réalisé en lisant l'image séparément avec une bibliothèque appelée Pillow et en acquérant la taille de l'image.
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) #La hauteur de l'image lorsqu'elle est affichée sur une diapositive. Pour le moment, réglez-le sur 3 pouces.
SLIDE_OUTPUT_PATH = "test.pptx" #Chemin de sortie de la diapositive
#Définition d'objet de diapositive
prs = Presentation()
#Obtenir la taille de la diapositive
SLIDE_WIDTH = prs.slide_width #
SLIDE_HEIGHT = prs.slide_height
#Ajouter une diapositive vierge
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
#Obtenez la taille de l'image et obtenez le rapport hauteur / largeur
im = Image.open(IMG_PATH)
im_width, im_height = im.size
aspect_ratio = im_width/im_height
#Calculer la taille de l'image affichée
img_display_height = IMG_DISPLAY_HEIGHT
img_display_width = aspect_ratio*img_display_height
#Calculer la coordonnée supérieure gauche de l'image lors du centrage
left = ( SLIDE_WIDTH - img_display_width ) / 2
top = ( SLIDE_HEIGHT - img_display_height ) / 2
#Ajouter une image à la diapositive
slide.shapes.add_picture(IMG_PATH, left, top, height = IMG_DISPLAY_HEIGHT)
#Diapositive de sortie
prs.save(SLIDE_OUTPUT_PATH)
Avec le code ci-dessus, vous pouvez faire glisser un poteau d'alimentation avec la figure centrée comme indiqué ci-dessous. (L'image de test a été prise par l'auteur)
La partie Oreiller peut être n'importe quoi tant que le rapport hauteur / largeur de l'image originale peut être calculé, donc par exemple, opencv peut être utilisé à la place. D'après la documentation, python-pptx a une classe appelée Image qui a une propriété size, et il semble possible d'en obtenir la taille, mais je ne savais pas comment le faire. Il n'est pas intelligent d'utiliser Pillow uniquement pour obtenir la taille de l'image, donc si quelqu'un sait comment le faire avec python-pptx seul, j'apprécierais que vous puissiez m'apprendre.
C'est tout pour cet article. Merci d'avoir lu jusqu'ici.
Recommended Posts