python里有处理图像的库PIL,我们可以利用PIL库中的函数将gif图按帧截取出来。
方法1
from PIL import Image # 导入PIL的Image包
import os
gifFileName = "./test.gif" # 把gif图赋值给gifFileName
im = Image.open(gifFileName) # 使用Image的open函数打开test.gif图像
pngDir = gifFileName[:-4] # 倒着从gifFileName中的倒数第四个开始取字符(跳过.gif),赋值给pngDir,作为文件夹的名字
os.mkdir(pngDir) # 用图片名创建一个文件夹,用来存放每帧图片,名字为pngDir的值
try:
while True: # 死循环
current = im.tell() # 用tell函数保存当前帧图片,赋值给current
im.save(pngDir+'/'+str(current)+'.png') # 调用save函数保存该帧图片
im.seek(current+1) # 调用seek函数获取下一帧图片,参数变为current帧图片+1
# 这里再次进入循环,当为最后一帧图片时,seek会抛出异常,代码执行except
except EOFError:
pass # 最后一帧时,seek抛出异常,进入这里,pass跳过
方法2
from PIL import Image, ImageSequence
im = Image.open("test.gif") # 使用Image的open函数打开test.gif图像
index = 1
for frame in ImageSequence.Iterator(im): # for循环迭代的取im里的帧
frame.save("frame%d.png" % index) # 取到一个帧调用一下save函数保存,每次保存明明为frameX.png
index += 1 # 序号依次叠加