图像序列帧恢复为GIF动图

简介: 使用Python的imageio库将图像序列帧恢复为GIF动图,支持自定义持续时间和尺寸调整。

需要用到的库有 imageio, os ,pillow库

from PIL import Image
import os
import imageio
def createGif(imagelist, gifName):
    frames = []
    for imageName in imagelist:
        print(imageName)
        if imageName.endswith('.png'):
            print(imageName)
            frames.append(imageio.imread(imageName)) # imread() 读取指定路径的图像,append 叠加矩阵
    imageio.mimsave(gifName, frames, 'GIF', duration=0.8)  # duration 帧时长
    return
#裁剪函数--统一大小
def clipPic():
    oldPics=""
    files = os.listdir("d:\\btmcXg")  # 打开文件路径下的所有资源,并返回一个列表对象(文件夹下的文件名称)
    for img in files:
        oldPic = Image.open("d:\\btmcXg\\{}".format(img))
        newPic = oldPic.resize((440,440))
        newPic.save("d:\\btmcXgNew\\{}".format(img))

def main():
    clipPic()
    path = 'd:\\btmcXgNew'  # 存放PNG图片文件夹位置
    gifName = 'd:\\btmcXgNew\\create.gif'  # 生成gif的名称
    files = os.listdir(path) # 打开文件路径下的所有资源,并返回一个列表对象(文件夹下的文件名称)
    imagelist = []
    # 遍历并且拼接每个文件路径-->列表对象
    for img in files:
        cd=os.path.join(path,img)
        imagelist.append(cd)
    print(imagelist)
    createGif(imagelist, gifName)

if __name__ == "__main__":
    main()

imageio库
mimsave()方法主要有4个参数,
第1个参数 url是要保存的GIF文件全路径名称,包括后缀名.gif;
第2个参数 ims是图片列表;
第3个参数 是保存类型,设置为字符串’GIF’;
第4个参数 duration为每张图片播放持续时间,单位为秒。

还有很多参数可以参考https://imageio.readthedocs.io/en/stable/index.html

imread()方法,读取指定路径的图像

os库

os,listdir() 列出某目录下所有的目录和文件。
os.path.join(path,*paths) 组合path和paths,返回一个字符串

这是我随便挑了几张图测试的效果

这是动图文件--中间有个图像被拉扁了(这块儿是我有的一些图原本就是透明的png,所以会黑)

相关文章
|
编解码 算法 文件存储
浅谈动图文件格式 - GIF
介绍动图的文件格式,及其优劣
2074 0
浅谈动图文件格式 - GIF
|
8月前
gif录屏与gif图片合成工具
gif录屏与gif图片合成工具
46 2
|
机器学习/深度学习 计算机视觉
【图片操作】提取GIF的图片帧
gif是我们日常生活中常用的一种图片,它介于视频和图片之间。我们可以用图片的内存体验到一些视频的感觉。但是有时候我们会想把gif的图片全部提取出来,今天我们就来实现一下这个操作。
458 0
|
JavaScript 前端开发
图片转base64、判断图片大小、图片压缩、图片上传
文章主要介绍 `js` 实现压缩上传图片转base64,其他的框架(如React、Vue、Angular)也可借此参考。**这个方法真实可用,已在实际项目中运行**。
356 0
|
计算机视觉 异构计算
【图片操作】给图片添加滤镜
现在我们都喜欢给图片添加滤镜,现在很多相机也自带了许多滤镜。我们可以在拍照的时候选择需要的滤镜。但是有时候我们需要给大量图片添加同样的滤镜,这个时候手动添加就非常麻烦了。为了方便,我们可以使用程序来帮我们完成添加滤镜的操作。
283 0
|
前端开发
制作了一个马赛克图片转换器
制作了一个马赛克图片转换器,可以将图片转换成马赛克风格,并可转换为 css box-shadow 进行输出。
|
前端开发 算法
制作了一个马赛克图片转换器 - 实现篇
上文有讲到我制作了一个马赛克图片转换器,可以将图片转换成马赛克风格,并可转换为 css box-shadow 进行输出。
|
计算机视觉
【图片操作】生成动态图片
动态图片我们使用的还是比较频繁的,平时的表情包有很多动图。今天我们要做的就是自己制作动态图片,其实就是将视频转换成动图,操作起来非常简单。下面我们就来看看如何实现吧。
596 0