Teilen Sie jede PowerPoint-Folie in eine JPG-Datei und geben Sie sie mit Python aus

Einführung

Möchten Sie eine PPT-Datei in JPG konvertieren und für die Dokumenterstellung verwenden? Ich habe eine Person gefunden, die an der Automatisierung arbeitet (https://qiita.com/natsutan/items/2487e24fe3f31569b40d), aber ich dachte, dass die folgenden zwei Punkte nicht ausreichen.

Aus diesem Grund habe ich basierend auf dem Namen des Folientitels von PPT eine Software erstellt, die jede Seite als JPG-Datei ausgibt.

Betriebsumgebung

Ausführungsergebnis

実行結果.jpg

Wie benutzt man

Wie viele Ränder sollten der Gesamtbreite mit Rand in der Datei zugewiesen werden? Mit whiteSpaceCutRatio können Sie festlegen, wie viel Prozent von oben geschnitten werden sollen (für den Titelschnitt). Bitte passen Sie es an Ihre Umgebung an.

Margin = 0.1; #Spanne
whiteSpaceCutRatio = 0.2; #Wie viel Prozent der oben genannten sollten gekürzt werden? Für jede PPT-Datei angepasst

Bequemere Verwendung

Wenn Sie eine Batchdatei durch Doppelklicken erstellen möchten, erstellen Sie eine Batchdatei wie die folgende. Sie können ein Bild aus PowerPoint generieren, indem Sie doppelklicken, ohne die Benutzeroberfläche zu durchlaufen.

Erklärung der Batchdatei

call C:\Users\hogemmacho\Anaconda3\Scripts\activate.bat 
C:\Users\hogemmacho\anaconda3\python.exe C:\Users\hogemmacho\Desktop\obenkyo\powerPointSlidesExportasJPG.py "C:\\Users\\hogemmacho\\Desktop\\obenkyo\\test1.pptx"

AnacondaPromptのpathの調べ方.jpg AnacondaPromptのpathの調べ方2.jpg

Sonstige sonstige Hinweise

OpenCV cv2.imread kann keine japanischen Dateinamen lesen. Also, in dieser Quelle, einmal in hogehogefugaFuga.jpg konvertiert und mit Opencv verarbeitet Auf den ursprünglichen Namen zurückgesetzt (Referenz: https://qiita.com/SKYS/items/cbde3775e2143cad7455) .. Japanisch nervt mit Python. Und danke an die Person, die den Artikel geschrieben hat

Ausführungscode

# -*- coding: utf-8 -*-
"""
Created on Sat Jun 13 13:49:23 2020

@author: hogemaccho
"""
import tkinter as tk
from tkinter import filedialog
import os 
from comtypes import client
import cv2
import numpy as np
import shutil 
import sys

# notice:
#Wenn Sie diese Datei in einem Ordnerpfad verwenden, der Japan enthält
#Funktioniert nicht richtig
#

# GlobalSetting Change here 
Margin = 0.1; #Spanne
whiteSpaceCutRatio = 0.2; #Wie viel Prozent der oben genannten sollten gekürzt werden? Für jede PPT-Datei angepasst



# Select PowerpointFile and get Absolute path 
def UIgetPPTFilePath(CurrentDirPath):
    root = tk.Tk()
    root.withdraw()
    typ = [('PPT-Datei','*.pptx')] 
    file_path = filedialog.askopenfilename(filetypes =typ, initialdir = CurrentDirPath)
    return file_path


# Create "images" dir
def makeImageDir(CurrentDirPath):
    ImageDirPath = CurrentDirPath+'\\images'
    if not(os.path.exists(ImageDirPath)):
        os.makedirs('images')
    return ImageDirPath
   
   
#Open PowerPoint and save Image for SaveDirpath  as JPG
def export_img(file_path,SaveDirPath):
    application = client.CreateObject("Powerpoint.Application")
    application.Visible = True
    presentation = application.Presentations.open(file_path)
    #SlideList = application.Acti
    slideList = application.ActivePresentation.Slides
    
    # Export JPG file  titlename = filename 
    for i in range(slideList.Count):
        #Initialize
        title = ""
        slide = slideList.Item(i+1) #Slides Start as 1 
        title = slide.Shapes.Title.TextFrame.TextRange.Text
        JPGFullPath = SaveDirPath+'\\'+title+'.jpg'
        slide.Export(JPGFullPath,'jpg')
        whiteSpaceCut(JPGFullPath,whiteSpaceCutRatio)
        
    presentation.close()
    application.quit()
    
    
    
#Cut Jpg white space 
def whiteSpaceCut(JPGFullPath,titleCutRatio):
    #Copy as a  countermeasure to  Japanese character 
    tempFileName = './hogehogefugaFuga.jpg'
    shutil.copy(JPGFullPath,tempFileName)
    
    #read jpg as gray Image 
    ImageData = cv2.imread(tempFileName,cv2.IMREAD_GRAYSCALE)
    
    CutImageData = cv2.imread(tempFileName,cv2.IMREAD_COLOR)
    CutImageData = CutImageData[round(ImageData.shape[0]*titleCutRatio):,:,:]
    
    #CutTitleData
    GrayImage = ImageData[round(ImageData.shape[0]*titleCutRatio):,:]
    
    #Serch White(r,g,b = 255,255,255) Area 
    GrayImageWidth = np.mean(GrayImage,axis = 0)
    GrayImageHeight = np.mean(GrayImage,axis = 1)

    GrayImageWidthStart = np.where(GrayImageWidth <255)[0][0] 
    GrayImageWidthEnd = np.where(GrayImageWidth <255)[0][-1] 
    
    GrayImageHeightStart = np.where(GrayImageHeight <255)[0][0] 
    GrayImageHeightEnd = np.where(GrayImageHeight <255)[0][-1] 
    
    #Take  Margin
    WidthLength  =  GrayImageWidthEnd - GrayImageWidthStart;
    HeightLength =  GrayImageHeightEnd - GrayImageHeightStart;
    
    #Cut area 
    WidthStartPoint = GrayImageWidthStart - round(WidthLength*Margin);
    if WidthStartPoint < 1:
        WidthStartPoint = 1

    WidthEndPoint = GrayImageWidthEnd + round(WidthLength*Margin);
    if WidthEndPoint >= len(GrayImageWidth):
        WidthEndPoint = len(GrayImageWidth)
  
    HeightStartPoint = GrayImageHeightStart - round(HeightLength*Margin)
    if HeightStartPoint < 1 :
        HeightStartPoint = 1;
    
    HeightEndPoint = GrayImageHeightEnd + round(HeightLength*Margin)
    if HeightEndPoint >= len(GrayImageHeight):
        HeightEndPoint = len(GrayImageHeight)
    
    
    #OutputImage
    OutputImageData = CutImageData[int(HeightStartPoint):int(HeightEndPoint),\
                                   int(WidthStartPoint):int(WidthEndPoint),\
                                       :]
    cv2.imwrite(tempFileName,OutputImageData)
    
    #rename File and delete tempprary file     
    shutil.copy(tempFileName,JPGFullPath)
    os.remove(tempFileName)
        

if __name__ == '__main__':
    
    # check command line
    args = sys.argv

    # Current DirPath
    CurrentDirPath = os.path.dirname(__file__)
    # get PPT file path using User Interface 
    if len(args)==1:
        file_path = UIgetPPTFilePath(CurrentDirPath)
    else:
        file_path = args[1]  
    
    # make images dir for current folder 
    ImageDirPath = makeImageDir(CurrentDirPath)
    
    # export image 
    export_img(file_path,ImageDirPath)


abschließend

Die Sushi-Lizenz wurde nicht eingefügt. Aber könnte mir jemand ein Sushi kaufen?

Recommended Posts

Teilen Sie jede PowerPoint-Folie in eine JPG-Datei und geben Sie sie mit Python aus
Lesen Sie die json-Datei mit Python, formatieren Sie sie und geben Sie json aus
Erstellen einer einfachen Power-Datei mit Python
[Python] Kombinieren von Listen mit Zahlen zu Zeichenfolgen und Schreiben in eine Ausgabedatei
Bildverarbeitung mit Python (ich habe versucht, es in 0 und 1 Mosaikkunst zu binarisieren)
Ich habe in Python ein Tool erstellt, das mit der rechten Maustaste auf eine Excel-Datei klickt und diese für jedes Blatt in Dateien unterteilt.
Verknüpfen Sie Python Enum mit einer Funktion, um es aufrufbar zu machen
Ausgabe in eine CSV-Datei mit Python
Erstellen Sie eine temporäre Datei mit Django als Zip und geben Sie sie zurück
[Python] So kratzen Sie eine lokale HTML-Datei und geben sie mit Beautiful Soup als CSV aus
2. Erstellen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (2. Grundlagen des Python-Programms)
Lesen und formatieren Sie CSV-Dateien gemischt mit Komma-Registerkarten mit Python-Pandas
Ein Memo mit Python2.7 und Python3 in CentOS
Ich habe GhostScript mit Python ausgeführt, das PDF in Seiten aufgeteilt und es in ein JPEG-Bild konvertiert.
Ein Python-Programm, das die Größe eines Videos ändert und es in ein Bild verwandelt
Lesen Sie die CSV-Datei mit Python und konvertieren Sie sie unverändert in DataFrame
Folie bearbeiten (Powerpo für Google) mit Python (kostengünstiger RPA-Fall mit Google API und Python)
Machen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (4. Datenstruktur)
Erstellen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (5. Information Entropy)
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe versucht, mit Python viele Bilder wie das Favicon des Google-Kalenders zu generieren und in Vues Projekt zu integrieren
Ich möchte ein Element mit numpy in eine Datei schreiben und es überprüfen.
Erstellen eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (3) Empfangen einer Python-Datei
Lesen einer CSV-Datei mit Python 2/3
Erstellen einer Python-Umgebung mit virtualenv und direnv
Lesen Sie JSON mit Python und geben Sie CSV aus
Starten Sie einen Webserver mit Python und Flask
Schreiben wir ein Python-Programm und führen es aus
Erstellen Sie mit Python eine Datei im Photoshop-Format (.psd)
Lesen Sie mit Python Zeile für Zeile aus der Datei
Ich möchte mit Python in eine Datei schreiben
Dateidialog mit Python-GUI öffnen (tkinter.filedialog)
Machen Sie einen Zylinder mit open3d + STL-Dateiausgabe
[Einführung in den Systemhandel] Ich habe einen Stochastic Oscillator mit Python gezeichnet und damit gespielt ♬
Erstellen Sie mit Streamlit schnell ein Python-Datenanalyse-Dashboard und stellen Sie es in AWS bereit
[Python] Ein Notizbuch, das die ipynb-Datei von GitHub ins Japanische übersetzt und herunterlädt.
Bis Sie mit Python unter Windows 7 eine maschinelle Lernumgebung erstellen und ausführen
Es ist einfach, SQL mit Python auszuführen und das Ergebnis in Excel auszugeben
Fügen Sie Bilder mit Python + α automatisch in Powerpo-Materialien ein
Prozedur zum Laden von MNIST mit Python und zur Ausgabe an png
Machen Sie jede PowerPoint-Seite zu einer Bilddatei in Python
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Installieren Sie Selenium auf Ihrem Mac und probieren Sie es mit Python aus
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erhalten Sie E-Mails von Google Mail und beschriften Sie sie mit Python3
[Python-pptx] Gibt PowerPoint-Schriftinformationen mit Python in CSV aus
Führen Sie eine Python-Datei mit relativem Import in PyCharm aus
[Python] Erstellen Sie mit cx_Freeze eine Verteilungsdatei für das Tkinter-Programm
Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus
Verwenden Sie Python-Programme mit dem Ausführungs-Plugin exec_filter von fluentd
Übersetzen Sie DeepL automatisch mit Python und Selen ins Englische
Erstellen Sie eine 2D-CAD-Datei ".dxf" mit Python [ezdxf]
[Python] Starten Sie eine Batchdatei aus Python und übergeben Sie Variablen.
Verwenden Sie Python-Programme mit dem exec Output Plugin von fluentd