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