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