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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM