使用Python实现压缩pptx的功能

 更新时间:2024年02月27日 11:23:48   作者:winfredzhang  
当处理大型PPTX文件时,其中包含许多高分辨率照片时,文件大小可能会显著增加,为了解决这个问题,我们可以使用Python编程语言和python-pptx库来压缩PPTX文件中的照片,下面我们就来看看具体操作吧

当处理大型PPTX文件时,其中包含许多高分辨率照片时,文件大小可能会显著增加。这不仅会占用存储空间,还可能导致文件传输和共享的问题。为了解决这个问题,我们可以使用Python编程语言和python-pptx库来压缩PPTX文件中的照片。在本篇博客中,我们将介绍如何使用Python来自动化这个过程。
C:\pythoncode\compesspptx.py

首先,我们需要安装python-pptx库。您可以使用以下命令通过pip来安装:

pip install python-pptx

一旦我们有了所需的库,我们可以编写代码来压缩PPTX文件中的照片。下面是一个示例代码:

import os
from pptx import Presentation
from PIL import Image

def compress_images_in_pptx(pptx_path, output_path, compression_quality=85):
    presentation = Presentation(pptx_path)

    for slide in presentation.slides:
        for shape in slide.shapes:
            if shape.shape_type == 13:  # 13 represents picture shape
                image = shape.image

                # Save the image to a temporary file
                image_path = os.path.join(output_path, image.filename)
                with open(image_path, 'wb') as f:
                    f.write(image._blob)

                # Compress the image
                compressed_image_path = os.path.join(output_path, 'compressed_' + image.filename)
                compress_image(image_path, compressed_image_path, compression_quality)

                # Replace the original image with the compressed image
                with open(compressed_image_path, 'rb') as f:
                    image_data = f.read()

                image._blob = image_data

                # Update the image size
                size = Image.open(compressed_image_path).size
                shape.width, shape.height = size

    output_pptx_path = os.path.join(output_path, 'compressed_presentation.pptx')
    presentation.save(output_pptx_path)
    return output_pptx_path

def compress_image(input_path, output_path, quality):
    image = Image.open(input_path)
    # image.save(output_path, optimize=True, quality=quality)
    image = image.convert("RGB")  # 将图像转换为RGB模式
    image.save(output_path, optimize=True, quality=quality, format='JPEG')
# 指定输入的PPTX文件路径和输出路径
input_pptx = './hanjun.pptx'
output_folder = './new/output'
# 调用函数进行图片压缩并保存压缩后的PPTX文件
compressed_pptx = compress_images_in_pptx(input_pptx, output_folder)

print(f"压缩后的PPTX文件已保存为: {compressed_pptx}")

在上面的代码中,我们定义了两个函数:compress_images_in_pptx和compress_image。compress_images_in_pptx函数用于遍历PPTX文件中的所有幻灯片和形状,找到图片形状并压缩其对应的图像。它还更新了图像的大小以适应压缩后的图像。compress_image函数用于压缩单个图像。

为了使用这些函数,您需要指定输入的PPTX文件路径和输出文件夹路径。将'path/to/input.pptx'替换为您要压缩的实际PPTX文件的路径,将'path/to/output'替换为您希望保存压缩后文件的输出文件夹路径。

运行上述代码后,它将读取PPTX文件中的图像,并将其压缩到指定的输出文件夹中。最后,它将保存一个新的压缩后的PPTX文件。

通过使用这个自动化的方法,您可以轻松地压缩PPTX文件中的照片,减小文件大小,提高传输和共享的效率。

知识补充

当然除了上文的方法,小编还为大家整理了一些Python中常用的文件压缩方法,并提供相应的代码示例,希望对大家有所帮助

gzip压缩

gzip是一种常见的文件压缩格式,它可以对文件进行无损压缩,并保留文件的完整性。在Python中,我们可以使用gzip模块来进行gzip压缩和解压缩操作。

下面是一个使用gzip压缩文件的示例代码:

import gzip

def compress_file(file_path, output_path):
    with open(file_path, 'rb') as file:
        with gzip.open(output_path, 'wb') as output:
            output.write(file.read())

# 压缩文件
compress_file('example.txt', 'example.txt.gz')

在上述代码中,我们首先使用open函数打开待压缩的文件,并使用rb模式读取文件的二进制内容。然后,我们使用gzip.open函数创建一个gzip压缩文件对象,将待压缩的文件内容写入该对象中。最后,我们将压缩后的内容写入到输出文件中。

zipfile压缩

zipfile是Python的标准库,它提供了对zip格式文件进行压缩和解压缩的功能。使用zipfile模块,我们可以将多个文件打包成一个zip文件,并可以选择是否压缩这些文件。

下面是一个使用zipfile压缩文件的示例代码:

import zipfile

def compress_files(file_paths, output_path):
    with zipfile.ZipFile(output_path, 'w') as zip:
        for file_path in file_paths:
            zip.write(file_path)

# 压缩文件
compress_files(['file1.txt', 'file2.txt'], 'files.zip')

在上述代码中,我们首先使用ZipFile函数创建一个新的zip文件对象,并使用w模式打开该对象以进行写入操作。然后,我们使用write方法将待压缩的文件逐个添加到zip文件中。最后,我们关闭zip文件对象,完成压缩操作。

tar压缩

tar是一种常见的文件打包格式,它可以将多个文件打包成一个单独的文件,并可以选择是否进行压缩。在Python中,我们可以使用tarfile模块来进行tar文件的压缩和解压缩操作。

下面是一个使用tarfile压缩文件的示例代码:

import tarfile

def compress_files(file_paths, output_path):
    with tarfile.open(output_path, 'w') as tar:
        for file_path in file_paths:
            tar.add(file_path)

# 压缩文件
compress_files(['file1.txt', 'file2.txt'], 'files.tar')

在上述代码中,我们首先使用tarfile.open函数创建一个新的tar文件对象,并使用w模式打开该对象以进行写入操作。然后,我们使用add方法将待压缩的文件逐个添加到tar文件中。最后,我们关闭tar文件对象,完成压缩操作。

到此这篇关于使用Python实现压缩pptx的功能的文章就介绍到这了,更多相关Python压缩pptx内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django  ORM 练习题及答案

    Django ORM 练习题及答案

    这篇文章主要介绍了Django ORM 练习题及答案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python基于Kivy写一个图形桌面时钟程序

    python基于Kivy写一个图形桌面时钟程序

    这篇文章主要介绍了python如何基于Kivy 写一个桌面时钟程序,帮助大家更好的利用python开发图形程序,感兴趣的朋友可以了解下
    2021-01-01
  • python-itchat 获取微信群用户信息的实例

    python-itchat 获取微信群用户信息的实例

    今天小编就为大家分享一篇python-itchat 获取微信群用户信息的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 利用Python实现自动生成图文并茂的数据分析

    利用Python实现自动生成图文并茂的数据分析

    这篇文章主要介绍了利用Python实现自动生成图文并茂的数据分析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • Linux系统(CentOS)下python2.7.10安装

    Linux系统(CentOS)下python2.7.10安装

    这篇文章主要为大家详细介绍了Linux系统(CentOS)下python2.7.10安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • python文件选择对话框的操作方法

    python文件选择对话框的操作方法

    这篇文章主要介绍了python文件选择对话框的操作方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Python实现微信高效自动化操作

    Python实现微信高效自动化操作

    在如今数字化时代,人们对于效率的追求越来越强烈,而PyAutoGUI和Pyperclip作为Python中的两个强大库,为我们实现自动化操作提供了便利,下面我们就来看看如何利用这两个库实现微信自动化操作吧
    2023-10-10
  • 使用IPython或Spyder将省略号表示的内容完整输出

    使用IPython或Spyder将省略号表示的内容完整输出

    这篇文章主要介绍了使用IPython或Spyder将省略号表示的内容完整输出,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 对python中类的继承与方法重写介绍

    对python中类的继承与方法重写介绍

    今天小编就为大家分享一篇对python中类的继承与方法重写介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python复制Excel带有条件格式的单元格sheet实现步骤

    Python复制Excel带有条件格式的单元格sheet实现步骤

    这篇文章主要为大家介绍了Python复制Excel带有条件格式的单元格sheet实现步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07

最新评论