zoukankan      html  css  js  c++  java
  • python 将GIF拆分成图片方法

    import os
    from PIL import Image, ImageSequence
    
    
    def parseGIF(gifname):
        # 将gif解析为图片
        # 读取GIF
        im = Image.open(gifname)
        # GIF图片流的迭代器
        iter = ImageSequence.Iterator(im)
        # 获取文件名
        file_name = gifname.split(".")[0]
        index = 1
        # 判断目录是否存在
        pic_dirct = "imgs/{0}".format(file_name)
        mkdirlambda = lambda x: os.makedirs(
            x) if not os.path.exists(x) else True  # 目录是否存在,不存在则创建
        mkdirlambda(pic_dirct)
        # 遍历图片流的每一帧
        for frame in iter:
            print("image %d: mode %s, size %s" % (index, frame.mode, frame.size))
            frame.save("imgs/%s/frame%d.png" % (file_name, index))
            index += 1
    
        # frame0 = frames[0]
        # frame0.show()
    
        # 把GIF拆分为图片流
        imgs = [frame.copy() for frame in ImageSequence.Iterator(im)]
        # 把图片流重新成成GIF动图
        imgs[0].save('out.gif', save_all=True, append_images=imgs[1:])
    
        # 图片流反序
        imgs.reverse()
        # 将反序后的所有帧图像保存下来
        imgs[0].save('./reverse_out.gif', save_all=True, append_images=imgs[1:])
    
    
    if __name__ == "__main__":
        parseGIF("03.gif")


    附件地址: https://files.cnblogs.com/files/fly-kaka/GIF%E5%8F%8D%E5%90%91%E8%A7%A3%E6%9E%90%E4%B8%BA%E5%9B%BE%E7%89%87.zip
  • 相关阅读:
    调试
    webpack output的path publicPath
    CSS实现单行、多行文本溢出显示省略号
    docker安装mysql
    构建docker镜像
    Tensorflow博文列表
    ML理论知识博文列表
    Python博文列表
    Opencv博文收藏列表
    Centos文章列表
  • 原文地址:https://www.cnblogs.com/fly-kaka/p/11694011.html
Copyright © 2011-2022 走看看