【办公类-99-06】20250512用Python制作PPT的GIF照片动图(统一图片大小、自定义不同切换秒数,以蝴蝶为例)

发布于:2025-05-13 ⋅ 阅读:(20) ⋅ 点赞:(0)

背景说明:

本周三就是督导复验,汇报PPT还在优化中……

原来PPT一页插入多张图片,我都是用美图的GIF做

存在问题:

1、每次都要打开链接,全选所有图片,才能导入

2、导入后的照片背景大小,默认为全部导入照片中最高、最宽的图片尺寸,导致一些小一点的照片会出现难看的白边。

3、切换时间最多2秒,而做PPT,一般最少也要3秒一张图

4、图片尺寸最大2000像素(再大就模糊了)

5、保存后输入文件名称。选择路径保存

6、需要转移GIF图片时,必须关闭美图软件,才能调用GIF图片

之前我一直觉得美图GIF比人工做切换动画方便多了,但是可选参数太少。

不过因为制作次数不多,都是用美图GIF做了。它已经提高了不少效率。

实际需求:

这次督导汇报又是大量的照片,为了能够最大化呈现照片效果,就需要合并GIF。

这次我想问问deepseek,是否可以用Python快速做JPG图片的GIF动画效果。

第1种效果:每张图片切换3秒

结果是可行的。所以我把照片默认为3秒,快速做出了GIF图片

(以蝴蝶为例)

'''
汇报PPT,把JPG图片合并为动态GIF,间隔时间可设置
deepseek,阿夏
20250512
'''

from PIL import Image
import os

m = int(input('间隔几秒\n'))

def create_gif_from_images(folder_path, output_gif, target_size=(1024, 720)):
    """
    将文件夹中的所有图片合并为GIF
    
    参数:
        folder_path: 包含图片的文件夹路径
        output_gif: 输出的GIF文件名
        target_size: 目标图片大小 (宽, 高)
    """
    # 获取文件夹中所有图片文件(不含GIF图片)
    image_files = []
    for file in os.listdir(folder_path):
        if file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.jifi')):
            image_files.append(os.path.join(folder_path, file))
    
    if not image_files:
        print("文件夹中没有找到图片文件!")
        return
    
    print(f"找到 {len(image_files)} 张图片")
    
    # 打开所有图片并调整大小
    images = []
    for i, image_file in enumerate(image_files):
        try:
            img = Image.open(image_file)
            # 直接拉伸到目标尺寸(不保持比例)
            img = img.resize(target_size, Image.LANCZOS)
            images.append(img)
        except Exception as e:
            print(f"无法处理文件 {image_file}: {e}")
    
    if not images:
        print("没有有效的图片可以处理!")
        return
    
    # 设置每帧的持续时间(毫秒)
    durations = [m * 1000] * len(images)  # 所有帧相同时间
    
    # 保存为GIF
    images[0].save(
        output_gif,
        save_all=True,
        append_images=images[1:],
        duration=durations,
        loop=0,  # 无限循环
        quality=100,  # 高质量
        optimize=True  # 优化GIF
    )
    
    print(f"GIF已成功保存为 {output_gif}")

# 使用示例
if __name__ == "__main__":
    path = r'C:\Users\jg2yXRZ\OneDrive\桌面'
    names = input('请输入文件夹名称: '