实用指南:PPT转图片拼贴工具 v1.0
软件介绍
这个软件的作用就是将单个PPT的每一页转换为单独的图片,然后将图片进行拼接起来。
但是我没有还没有克服一次性处理多个文件。
效果展示如下:
软件安装
软件源码
import osimport reimport win32com.clientfrom PIL import Image def 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_size canvas_width = first_img.width canvas_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_size col = i % row_size x = 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