当前位置: 首页 > news >正文

PPT转图片拼贴工具 v1.0

软件介绍

这个软件的作用就是将单个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

相关文章:

  • dvwa11——XSS(Reflected)
  • 【Maniskill】使用Ppo的官方基线训练时出现指标突然“塌陷”的现象
  • CSP-VP37th
  • ML Kit与YOLO:移动AI与实时检测终极对决
  • 前缀和题目:逐步求和得到正数的最小值
  • 打造智慧医疗枢纽,香港维尔利引领东南亚健康科技升级
  • 【Docker管理工具】部署Docker可视化管理面板Dpanel
  • LoRA:大模型高效微调的低秩之道——原理解析与技术实现
  • 【实施指南】Android客户端HTTPS双向认证实施指南
  • 摄像机ISP处理流程
  • 【华为云Astro-服务编排】服务编排使用全攻略
  • NLP学习路线图(二十六):自注意力机制
  • NC | 基于语言模型的药物设计新方法
  • Spring @Scheduled vs XXL-JOB vs DolphinScheduler vs Airflow:任务调度框架全景对比
  • 网页抓取混淆与嵌套数据处理流程
  • 检测到 #include 错误。请更新 includePath。已为此翻译单元(D:\软件\vscode\test.c)禁用波形曲线
  • BLOB 是用来存“二进制大文件”的字段类型
  • QMetaObject::invokeMethod调用失败
  • 基于rpc框架Dubbo实现的微服务转发实战
  • 【基础】每天掌握一个 Linux 命令:grep
  • 找人做网站注意哪些/html家乡网站设计
  • 美国网上做调查赚钱10大网站推荐/广东seo推广
  • 石家庄做网站价格/太原网站制作推广
  • 系统集成销售和网站建设销售/网络营销的工作内容包括哪些
  • 数据网站怎么做的/nba最新新闻
  • 乐都企业网站建设哪家快/网页设计学生作业模板