Python学习笔记-根据图片生成GIF动图

本文详细介绍了如何使用Python的PIL库处理jpg图片并转换为PNG格式,然后利用imageio库生成GIF动图,包括获取图片列表、格式转换和创建动图过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python学习笔记-根据图片生成GIF动图



前言

上面的动图就是根据很多张jpg格式的图片通过Python程序合并而成。


一、引用的库说明

PIL(Python Imaging Library):一个用于图像处理的Python库,它提供了广泛的图像操作功能。安装命令:

pip install pillow

imageio:一个用于读取和写入图像数据的Python库。它提供了一个简单且统一的接口,可以读取和保存多种格式的图像数据。安装命令:

pip install imageio==2.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

二、具体实现

1.引入库

代码如下:

import imageio
from PIL import Image
import os

2.获取指定格式的图片

代码如下:

def get_image_list(image_end):
    """
    获取图片列表
    :param image_end: 图片的后缀名
    :return:返回符合后缀名的图片泪飙
    """
    current_dir = os.getcwd()  # 获取当前工作目录的路径
    files = os.listdir(current_dir)  # 获取路径下的文件及文件夹
    image_files = []
    for file in files:
        # 循环取出路径下符合图片后缀名的图片文件名
        if os.path.isfile(file) and file.lower().endswith(image_end):
            image_files.append(file)
    return image_files

3.转换图片格式

使用PIL 的Image 将图片格式转换为PNG格式

代码如下:

    jpg_list = get_image_list('jpg')
    for jpg in jpg_list:
        image = Image.open(jpg)
        new_image_path = os.path.splitext(jpg)[0]+".png"
        
        # 转换图片格式为PNG再保存
        image.save(new_image_path, "PNG")

4.使用imageio生成动图

代码如下:

def create_gif(image_list, gif_name, duration=1):
    """
    :param image_list: 原始图片列表 只支持png格式
    :param gif_name:  生成的gif文件名 带.gif后缀
    :param duration:  gif图片时间间隔 默认1s
    :return:
    """
    frames = []
    for image_name in image_list:
        frames.append(imageio.imread(image_name))
    try:
        imageio.mimsave(gif_name, frames, 'GIF', duration=duration)
    except Exception as e:
        print(e)
    return

5.生成动图

代码如下:

    image_list = get_image_list('png')
    print(image_list)
    gif_name = input("请输入新生成git图片文件名:")
    duration = 1
    create_gif(image_list, gif_name, duration)

总结

以上就是今天要讲的内容,本文仅仅简单介绍了使用PIL 包来修改图片格式,使用imageio生成GIF图片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值