吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6643|回复: 73
收起左侧

[原创工具] 批量将当前文件夹下的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

微信截图_20230620131540.png
原代码:
[Python] 纯文本查看 复制代码
# -*- 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转换图片的这种工具啊,哈哈!
borea 发表于 2023-6-20 13:30
zhaoyafei19 发表于 2023-6-20 13:34
supernox 发表于 2023-6-20 13:36
此乃神器   必须好评!!!!
lazychen 发表于 2023-6-20 13:36
有没有PDF直接拖入转高清图片的。???
wi_xue2008 发表于 2023-6-20 14:07
谢谢分享
xiaodada 发表于 2023-6-20 14:30
这个不错 工作有时候用得上
blindcat 发表于 2023-6-20 14:34
感觉不错,有时候会用得上
 楼主| qzwsa 发表于 2023-6-20 14:37
lazychen 发表于 2023-6-20 13:36
有没有PDF直接拖入转高清图片的。???

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

本版积分规则

返回列表

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

GMT+8, 2024-12-23 17:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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