軟件介紹
這個軟件的作用就是將單個PPT的每一頁轉換為單獨的圖片,然后將圖片進行拼接起來。
但是我沒有還沒有解決一次性處理多個文件。
效果展示如下:
軟件安裝
軟件源碼
import os
import re
import win32com.client
from PIL import Imagedef convert_ppt_to_png(ppt: str, output_folder: str) -> None:try:pptObj = win32com.client.Dispatch("PowerPoint.Application")except Exception as e:raise RuntimeError(f"無法啟動 PowerPoint 應用程序: {e}")if not os.path.exists(ppt):raise FileNotFoundError(f"PPT 文件不存在: {ppt}")presentation = pptObj.Presentations.Open(ppt, WithWindow=False)presentation.SaveAs(output_folder, 18)presentation.Close()pptObj.Quit()def create_collage(input_folder: str, output_folder: str, ppt_name: str, row_size: int, col_gap: int, row_gap: int) -> None:# 加載圖片files = os.listdir(input_folder)# 匹配"幻燈片數字.png"格式的文件,不區分大小寫slide_files = [f for f in files if re.match(r"幻燈片\d+\.png", f, re.IGNORECASE)]if not slide_files:raise RuntimeError(f"未找到幻燈片圖片文件")# 按數字排序幻燈片圖片slide_files.sort(key=lambda x: int(re.search(r'\d+', x).group()))# 打開所有圖片try:images = [Image.open(os.path.join(input_folder, f)) for f in slide_files]except Exception as e:raise RuntimeError(f"加載圖片時出錯: {e}")# 獲取圖片尺寸if not images:raise RuntimeError("沒有可處理的圖片")width, height = images[0].size# 第一行圖片放大顯示first_img = images[0].resize((width * row_size + col_gap * (row_size - 1), height * row_size + int(col_gap * (row_size - 1) * height / width)), Image.LANCZOS)remaining_images = images[1:]# 計算畫布尺寸rows = (len(remaining_images) + row_size - 1) // row_sizecanvas_width = first_img.widthcanvas_height = first_img.height + rows * (height + row_gap)# 創建畫布collage_image = Image.new("RGB", (canvas_width, canvas_height), (255, 255, 255))# 粘貼第一張放大的圖片collage_image.paste(first_img, (0, 0))# 粘貼剩余圖片for i, img in enumerate(remaining_images):row = i // row_sizecol = i % row_sizex = col * (width + col_gap)y = first_img.height + row * (height + row_gap)collage_image.paste(img, (x, y))# 指定拼貼畫的保存路徑,使用PPT文件名collage_path = os.path.join(output_folder, f"{ppt_name}.png")collage_image.save(collage_path)# 刪除臨時PNG文件for f in slide_files:os.remove(os.path.join(input_folder, f))if __name__ == "__main__":ppt = r'D:\Desktop\文件存儲\1\6.5世界環境日主題課件1.pptx'output_folder = r'D:\Desktop\文件存儲\1'row_size = 3 # 每行圖片數量col_gap = 10 # 列間距(像素)row_gap = 10 # 行間距(像素)# 從PPT路徑中提取文件名(不帶擴展名)ppt_filename = os.path.basename(ppt)ppt_name = os.path.splitext(ppt_filename)[0]# 確保輸出文件夾存在os.makedirs(output_folder, exist_ok=True)# 首先將PPT轉換為PNG圖片convert_ppt_to_png(ppt, output_folder)# 然后從生成的圖片創建拼貼畫create_collage(output_folder, output_folder, ppt_name, row_size, col_gap, row_gap)print(f"處理完成,拼貼畫已保存為: {ppt_name}.png")# 保持程序打開,等待用戶輸入input("按回車鍵退出...")
只需要把文件路徑替換為自己的就行
源碼下載
鏈接:https://pan.quark.cn/s/7aee9f6a4d62