如何用Python将GIF逐帧为单独的图片文件?
- 内容介绍
- 文章标签
- 相关推荐
本文共计218个文字,预计阅读时间需要1分钟。
pythonimport osfrom PIL import Image, ImageSequence
def parse_gif(gifname): images=[] with Image.open(gifname) as img: for frame in ImageSequence.Iterator(img): images.append(frame.copy()) return images
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")
本文共计218个文字,预计阅读时间需要1分钟。
pythonimport osfrom PIL import Image, ImageSequence
def parse_gif(gifname): images=[] with Image.open(gifname) as img: for frame in ImageSequence.Iterator(img): images.append(frame.copy()) return images
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")

