一、指令碼功能
PPT批次轉換圖片,格式支援png、jpg(手動指令碼中改引數)
二、環境說明
使用Windows環境,必須安裝【Microsoft PowerPoint】
三、使用說明
建議新建一個資料夾,將python指令碼和待轉換的PPT(檔名建議不包含中文),放到一個資料夾中
四、實現步驟
- 先建立和PPT檔案同名的空資料夾
- 將PPT轉換為圖片,放到該資料夾中(圖片預設名稱是幻燈片1.PNG,幻燈片2.PNG。。。)
- 將轉換後的圖片批次重新命名,轉換後的名稱是1.png、2.png。。。
五、程式碼
git:github.com/chisanhe/ppt_to_img.git
import os
import win32com.client
'''
支援轉換為PNG、JPG,搜尋後替換即可
'''
#JPG是17
ppSaveAsJPG = 17
#PNG是18
ppSaveAsPNG = 18
'''將PPT另存為圖片格式
arguments:
pptFullName: 要轉換的ppt檔案,
pptName:轉換後的存放JPG檔案的目錄
imgType: 圖片型別
'''
def pptToImg(pptFullName, pptName, imgType):
# 啟動PPT
pptClient = win32com.client.Dispatch('PowerPoint.Application')
# 設定為0表示後臺執行,不顯示,1則顯示
pptClient.Visible = 1
# 開啟PPT檔案
ppt = pptClient.Presentations.Open(pptFullName)
# 另存為圖片
ppt.SaveAs(pptName, imgType)
# 退出
pptClient.Quit()
'''
多資料夾多圖片檔案重新命名
'''
def renameImg(currentDir):
#當前目錄下,只獲取所有的資料夾
folders = [dI for dI in os.listdir(currentDir) if os.path.isdir(os.path.join(currentDir, dI))]
i = 0;
for folder in folders:
#開啟單個資料夾,獲取檔案列表
fileList = os.listdir(folder)
#重新命名檔案,規則1、2、3,開發時讀取檔案利於遍歷
i = 0;
#遍歷單個檔案
for file in fileList:
#為了避免修改其他檔案,只判斷等於PNG、JPG的圖
fileFix = os.path.splitext(file)[-1]
if fileFix.lower() == '.png' or fileFix == '.jpg':
i += 1
#完整路徑img檔名 + 字尾,F:\my\projects\python\ppt2img\01_single_img/1.png
imgFullName = os.path.join(currentDir, folder + '/' + file)
#完整路徑img檔名不含字尾 F:\my\projects\python\ppt2img\01_single_img
imgName = os.path.join(currentDir, folder)
#重新命名
os.rename(imgFullName, imgName + '/' + (str(i) + fileFix.lower()))
if __name__ == '__main__':
print("PPT轉圖片開始")
# #獲取當前路徑
currentDir = os.sys.path[0]
#獲取當前檔案列表
currentDirAllFiles = os.listdir(currentDir)
#獲取當前目錄下所有字尾是ppt、pptx的檔案,返回值是生成器物件(可迭代)
currentDirPptFiles = (fns for fns in currentDirAllFiles if fns.endswith(('.ppt', '.pptx')))
# 當前目錄下所有的PPT檔名,和上述區別在於有無字尾名,返回值是生成器物件(可迭代)
currentDirPptNames = (os.path.splitext(fns)[0] for fns in currentDirAllFiles if fns.endswith(('.ppt', '.pptx')))
#fullFileName是檔名稱 + 字尾01_single_img.pptx,fileName是檔名稱不含字尾01_single_img
for fullFileName, fileName in zip(currentDirPptFiles, currentDirPptNames):
#完整路徑ppt檔名 + 字尾,F:\my\projects\python\ppt2img\01_single_img.pptx
pptFullName = os.path.join(currentDir, fullFileName)
#完整路徑PPT檔名 F:\my\projects\python\ppt2img\01_single_img
pptName = os.path.join(currentDir, fileName)
#需要建立一個與PPT同名的資料夾,判斷下,如果不存在則建立,已存在忽略
if not os.path.exists(pptName):
os.mkdir(pptName)
#PPT轉PNG
pptToImg(pptFullName, pptName, ppSaveAsPNG)
#PPT轉JPEG
# pptToImg(pptFullName, pptName, ppSaveAsJPG)
print("PPT轉圖片完成")
print("圖片重新命名開始")
renameImg(currentDir)
print("圖片重新命名完成,指令碼執行結束")
本作品採用《CC 協議》,轉載必須註明作者和本文連結