吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7061|回复: 72
上一主题 下一主题
收起左侧

[原创工具] 批量将当前文件夹下的PPT生成图片并合并成长图

    [复制链接]
跳转到指定楼层
楼主
qzwsa 发表于 2023-6-20 13:21 回帖奖励
本帖最后由 qzwsa 于 2023-6-20 16:32 编辑

比较简单的功能 ,简单粗暴的直接将当前文件夹下PPT文件按每一页生成图片,再将生成的图片合并成一张长图。
工具下载地址:https://wwzm.lanzouj.com/ityK20zl3qhi
新增优化功能:根据文件名生成对应的文件夹并增加一个批次只处理10文件防止内存溢出保证程序的稳定性。
下载地址 :https://wwzm.lanzouj.com/ibAeg0zld8kd


原代码:
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 20 12:53:25 2023
 
@author: 吾爱-qzwsa
"""
 
import os
import win32com.client
from PIL import Image
 
print("本工具20230620发布于吾爱。qzwsa")
 
def ppt_to_images():
    # 判断当前文件夹是否有 PPT 文件
    ppt_files = [file_name for file_name in os.listdir() if file_name.endswith(".ppt") or file_name.endswith(".pptx")]
    if len(ppt_files) == 0:
        print("没有找到 PPT 文件!")
        return []
 
    # 启动 PowerPoint 应用程序
    app = win32com.client.Dispatch("PowerPoint.Application")
 
    # 存储处理结果的字典
    result = {
        "ppt_count": 0,
        "image_count": 0,
        "merged_count": 0
    }
 
    # 遍历当前文件夹下的所有 PPT 文件
    for file_name in ppt_files:
        # 更新 ppt_count
        result["ppt_count"] += 1
 
        # 显示当前处理的 PPT 文件名
        print(f"正在处理第 {result['ppt_count']} 个 PPT 文件:{file_name}...")
 
        # 打开 PPT 文件
        presentation = app.Presentations.Open(os.path.abspath(file_name))
 
        # 存储当前 PPT 文件的所有图片的列表
        image_list = []
 
        # 遍历每一页幻灯片
        for i, slide in enumerate(presentation.Slides):
            # 设置图片输出路径和文件名
            image_path = f"{os.path.splitext(file_name)[0]}_{i+1}.jpg"
            image_path = os.path.join(os.getcwd(), image_path)
 
            # 另存为图片
            slide.Export(image_path, "JPG")
            result["image_count"] += 1
 
            # 将图片打开,添加到列表
            image = Image.open(image_path)
            image_list.append(image)
 
        # 关闭 PPT 文件
        presentation.Close()
 
        # 如果当前 PPT 文件没有图片,则不合并图片
        if len(image_list) == 0:
            continue
 
        # 合并当前 PPT 文件的所有图片
        width, height = image_list[0].size
        height *= len(image_list)
        merged_image = Image.new("RGB", (width, height))
        for i, image in enumerate(image_list):
            merged_image.paste(image, (0, i * height // len(image_list)))
        # 获取当前 PPT 文件名,用于作为合并后大图的文件名的一部分
        ppt_name = os.path.splitext(file_name)[0]
        merged_image_path = os.path.join(os.getcwd(), f"{ppt_name}-合并图.jpg")
        merged_image.save(merged_image_path)
        result["merged_count"] += 1
 
    # 关闭 PowerPoint 应用程序
    app.Quit()
 
    # 如果没有处理任何 PPT 文件,则返回空列表
    if result["ppt_count"] == 0:
        return []
 
    # 输出处理结果
    print(f"已处理 {result['ppt_count']} 个 PPT,共生成 {result['image_count']} 张图片,合并了 {result['merged_count']} 张大图。")
 
    return [f"{os.path.splitext(file_name)[0]}-合并图.jpg" for file_name in ppt_files if len([slide for slide in win32com.client.Dispatch("PowerPoint.Application").Presentations.Open(os.path.abspath(file_name)).Slides]) > 0]
 
if __name__ == "__main__":
    ppt_to_images()

免费评分

参与人数 27吾爱币 +31 热心值 +25 收起 理由
99063810 + 1 + 1 我很赞同!
山人来也 + 1 + 1 用心讨论,共获提升!
阴凉 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
三北豆酥糖 + 1 + 1 谢谢@Thanks!
leetyt + 1 谢谢@Thanks!
ysjd22 + 1 真好啊
lvv15 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hahj0113 + 1 + 1 我很赞同!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
aa20221101 + 1 + 1 热心回复!
爱的太迟 + 1 用心讨论,共获提升!
tiantianxiaoxue + 1 + 1 我很赞同!
lwslws + 1 + 1 谢谢@Thanks!
viconly + 1 + 1 我很赞同!
zj7344426 + 1 + 1 挖槽,流批!实用!
happyfox1999 + 1 + 1 谢谢@Thanks!
love008 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yanglinman + 1 谢谢@Thanks!
mesir + 1 + 1 谢谢@Thanks!
zjerry + 1 + 1 谢谢@Thanks!
ewenchen + 1 + 1 热心回复!
rhci + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
一场荒唐半生梦 + 1 + 1 我很赞同!
syz87 + 1 + 1 谢谢@Thanks!
dingqh + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
supernox + 1 + 1 我很赞同!
caolin1861 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
caolin1861 发表于 2023-6-20 13:30
本帖最后由 caolin1861 于 2023-6-20 13:36 编辑

正是所需要的,不过有个大胆的想法,能不能做个Word及excel转换图片的这种工具啊,哈哈!
3#
borea 发表于 2023-6-20 13:30
4#
zhaoyafei19 发表于 2023-6-20 13:34
5#
supernox 发表于 2023-6-20 13:36
此乃神器   必须好评!!!!
6#
lazychen 发表于 2023-6-20 13:36
有没有PDF直接拖入转高清图片的。???
7#
wi_xue2008 发表于 2023-6-20 14:07
谢谢分享
8#
xiaodada 发表于 2023-6-20 14:30
这个不错 工作有时候用得上
9#
blindcat 发表于 2023-6-20 14:34
感觉不错,有时候会用得上
10#
 楼主| qzwsa 发表于 2023-6-20 14:37 |楼主
lazychen 发表于 2023-6-20 13:36
有没有PDF直接拖入转高清图片的。???

以前有做过,但没发布到论坛上
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-21 12:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表