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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908283.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908283.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908283.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嵌入式學習筆記DAY33(網絡編程——TCP)

一、網絡架構 C/S (client/server 客戶端/服務器):由客戶端和服務器端兩個部分組成。客戶端通常是用戶使用的應用程序,負責提供用戶界面和交互邏輯 ,接收用戶輸入,向服務器發送請求,并展示服務…

拋磚引玉:RadarDet4D,NuScenes數據集Radar模態目標檢測第二名(即將開源)

這幾年一直在關注自動駕駛3D目標檢測相關的研究。在NuScenes數據集上有很多經典的模型被提出并得到了驗證,純視覺3D目標檢測經典的方法有BEVFormer、BEVDet系列、DETR3D、Sparse4D等工作,基于LiDAR的有CenterPoint、多模態有BEVFusion、DAL、UniTR等。 …

更新Java的環境變量后VScode/cursor里面還是之前的環境變量

最近我就遇到這個問題,這個一般是安裝了多個版本的Java,并設置好環境變量,但VScode/cursor內部環境變量卻沒有改變 解決辦法 打開設置,或者直接快捷鍵CTRL,搜索Java:Home編輯settings.json文件 把以下部分改為正確的…

線程的基礎知識

進程和線程的區別? 從實例去引入我們的進程和線程的概念,說出進程和線程的關系,引出線程,說出兩者的內存分配占用,上下文切換的區別 當操作系統把我們磁盤中的程序加載到我們的內存當中,為其分配內存空間&a…

x86 匯編中的【條件跳轉指令】:從基礎到擴展的全面解析(查表版)

為了徹底覆蓋 x86 架構中所有條件跳轉指令,包括 8086 到現代 x86-64 的全部變體,我重新整理了分類體系,并補充了鮮為人知的指令變體、操作數大小前綴和歷史演進。 本文需要運用的知識(需要詳細了解可點擊對應的點): flags寄存器…

FPGA點亮ILI9488驅動的SPI+RGB接口LCD顯示屏(一)

FPGA點亮ILI9488驅動的SPIRGB接口LCD顯示屏 ILI9488 RGB接口初始化 目錄 前言 一、ILI9488簡介 二、3線SPI接口簡介 三、配置寄存器介紹 四、手冊和初始化verilog FPGA代碼 總結 前言 ILI9488是一款廣泛應用于嵌入式系統和電子設備的彩色TFT LCD顯示控制器芯片。本文將介…

Git忽略規則.gitignore不生效解決

我在gitlab中新建了一個項目倉庫,先把項目文件目錄綁定到倉庫,并全部文件都上傳到了倉庫中。 然后又從別的項目復制了忽略文件配置過來,怎么搞他都不能生效忽略我不要提交倉庫的文件。 從網上查到說在本地倉庫目錄中,打開命…

記一個判決書查詢API接口的開發文檔

一、引言 在企業風控、背景調查、盡職調查等場景中,判決書查詢是一個非常重要的環節。通過判決書查詢,可以了解個人或企業的司法涉訴情況,為風險評估提供數據支持。本文將詳細介紹如何開發和使用一個司法涉訴查詢API接口,包括客戶…

mac版excel如何制作時長版環形圖

設置輔助列 創建簇狀柱形圖 將輔助列繪制在次坐標軸 工作時長在主坐標軸,右鍵分別更改圖表類型為圓環。 輔助列圓環全部為灰色,邊框為白色 輔助列設置透明度100% 設置輔助列和工作時長列同樣的圓環大小 可得 核心:只要輔助列邊框不透明…

貪心算法應用:埃及分數問題詳解

貪心算法與埃及分數問題詳解 埃及分數(Egyptian Fractions)問題是數論中的經典問題,要求將一個真分數表示為互不相同的單位分數之和。本文將用2萬字全面解析貪心算法在埃及分數問題中的應用,涵蓋數學原理、算法設計、Java實現、優…

量化面試綠皮書:1. 海盜分金博弈

文中內容僅限技術學習與代碼實踐參考,市場存在不確定性,技術分析需謹慎驗證,不構成任何投資建議。 1. 海盜分金博弈 五個海盜搶走了一個裝滿 100 枚金幣的箱子。作為一群民主的海盜,他們同意以下分配戰利品的方法:最資深的海盜將…

購物商城網站 Java+Vue.js+SpringBoot,包括商家管理、商品分類管理、商品管理、在線客服管理、購物訂單模塊

購物商城網站 JavaVue.jsSpringBoot,包括商家管理、商品分類管理、商品管理、在線客服管理、購物訂單模塊 百度云盤鏈接:https://pan.baidu.com/s/10W0kpwswDSmtbqYFsQmm5w 密碼:68jy 摘 要 隨著科學技術的飛速發展,各行各業都在…

用mediamtx搭建簡易rtmp,rtsp視頻服務器

簡述: 平常測試的時候搭建rtmp服務器很麻煩,這個mediamtx服務器,只要下載就能運行,不用安裝、編譯、配置等,簡單易用、ffmpeg推流、vlc拉流 基礎環境: vmware17,centos10 64位,wi…

Java 高頻面試題場景(二):老年健康手環數據管理系統

系列文章 序號文章名稱1Java 高頻面試題場景(一):社區智能充電樁管理系統2Java 高頻面試題場景(二):老年健康手環數據管理系統文章目錄 系列文章一、項目信息項目介紹技術棧主要工作二、面試題及回答1. **面試官問**:在這個老年健康手環數據管理系統項目中,為什么要用R…

Python爬蟲爬取天貓商品數據,詳細教程【Python經典實戰項目】

Python爬取天貓商品數據詳細教程 一、前期準備 1. 環境配置 Python環境:確保已安裝Python 3.x版本,建議使用Anaconda或直接從Python官網下載安裝。第三方庫: requests:用于發送HTTP請求。BeautifulSoup:用于解析HTM…

Symbol as Points: Panoptic Symbol Spotting via Point-based Representation

文章目錄 AbstractIntroductionRelated WorkVector Graphics RecognitionPanoptic Symbol SpottingPoint Cloud Segmentation MethodFrom Symbol to PointsPrimitive positionPrimitive feature Panoptic Symbol Spotting via Point-based RepresentationBackboneSymbol Spotti…

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()獲取任意值的類型對象1.2、reflect.ValueOf()1.3、結構體反射 2、文件操作2.1、os.Open()打開文件2.2、方式一:使用Read()讀取文件2.3、方式二:bufio讀取文件2.4、方式三:os.ReadFile讀取2.5、寫…

[閉源saas選項]Pinecone:為向量數據庫而生的實時語義搜索引擎

目錄 Pinecone:為向量數據庫而生的實時語義搜索引擎 一、什么是 Pinecone? 二、Pinecone 是開源的嗎?支持私有化部署嗎? 三、為什么需要向量搜索? 四、Pinecone 的核心優勢 五、使用 Pinecone 的典型流程 六、在…

【Maniskill】使用Ppo的官方基線訓練時出現指標突然“塌陷”的現象

1. 問題描述 1.1 在使用官方代碼進行訓練的時候“success_once突然掉落到0” 簡要說明你在使用官方 examples/baselines/ppo/baselines.sh 腳本訓練 PickCube-v1 時,在 early stage(如前 50 k 步)指標正常、success_once 接近 1,…

本地部署大模型實戰:使用AIStarter一鍵安裝Ollama+OpenWeb教程(含最新版本更新指南)

大家好!今天給大家帶來一個本地部署大模型的詳細教程 ,主要介紹如何通過 AIStarter 4.0 一鍵部署 Ollama OpenWeb 的完整流程。如果你還在為在線大模型不穩定、隱私泄露等問題煩惱,那么本地部署 將是一個非常不錯的選擇! 首先&am…