Vous voulez convertir un fichier PPT en JPG et l'utiliser pour la création de documents? J'ai trouvé une personne qui travaille sur l'automatisation (https://qiita.com/natsutan/items/2487e24fe3f31569b40d), mais j'ai pensé que les deux points suivants étaient insuffisants.
Par conséquent, sur la base du nom du titre de la diapositive PPT, j'ai créé un logiciel qui génère chaque page sous forme de fichier JPG.
--Lorsque vous l'exécutez sur Spyder, une fenêtre apparaît, dans laquelle vous pouvez sélectionner le fichier PowerPoint. --Le dossier images est créé et un fichier JPG est généré avec le nom du titre de chaque page.
Combien de marges doivent être allouées à la largeur totale avec Marge dans le fichier? Avec whiteSpaceCutRatio, vous pouvez définir le pourcentage à couper à partir du haut (pour la coupe de titre). Veuillez ajuster en fonction de votre propre environnement.
Margin = 0.1; #marge
whiteSpaceCutRatio = 0.2; #Quel pourcentage de ce qui précède devrait être réduit? Ajusté pour chaque fichier PPT
Si vous souhaitez générer un fichier batch en double-cliquant, créez un fichier batch comme celui ci-dessous. Vous pouvez générer une image à partir de PowerPoint en double-cliquant sans passer par UserInterface.
Explication du fichier batch
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"
OpenCV cv2.imread ne peut pas lire les noms de fichiers japonais. Donc, dans cette source, une fois converti en hogehogefugaFuga.jpg et traité avec Opencv Revenu au nom d'origine (Référence: https://qiita.com/SKYS/items/cbde3775e2143cad7455) .. Le japonais est ennuyeux avec python. Et merci à la personne qui a écrit l'article
# -*- 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:
#Si vous utilisez ce fichier sur un chemin de dossier qui inclut le Japon
#ne fonctionne pas correctement
#
# GlobalSetting Change here
Margin = 0.1; #marge
whiteSpaceCutRatio = 0.2; #Quel pourcentage de ce qui précède devrait être réduit? Ajusté pour chaque fichier PPT
# Select PowerpointFile and get Absolute path
def UIgetPPTFilePath(CurrentDirPath):
root = tk.Tk()
root.withdraw()
typ = [('Fichier PPT','*.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)
N'a pas collé la licence de sushi. Mais quelqu'un pourrait-il m'acheter un sushi?
Recommended Posts