大家可以看到這個 gif圖片 中的 美女,他是在動的 我們要做的就是將他所有的動作 全部都用圖片記錄下來。一幀一幀的保存下來。gif的本質就是將一幀一幀的圖片 輪播。
代碼還是很簡單的
from PIL import Image
import os
gilFileName = 'meinv.gif' # 將準備好的gif 打開
im = Image.open(gilFileName)
pngDir = gilFileName[:-4] # 獲取 .gif 前面的字符,也就是名字
if not os.path.exists(pngDir):
'''如果沒有重名的文件夾,就生成這個文件夾來存放圖片'''
os.mkdir(pngDir)
try:
'''while True 的作用就是不停的遍歷gif,取得每一個圖片,如果圖片訪問結束 會報錯,所以 try一下'''
while True:
current = im.tell() # 獲取img對象的 幀圖片
im.save(pngDir + '\\' + str(current) + '.png') # 保存
im.seek(current + 1) # seek的作用就相當於 裝飾器的 next,代表下一個
# current 代表幀圖片,+1 就是下一張
except EOFError:
pass
代碼就是這麼簡單,看一下成果
咳咳,迴歸正題。大家可以看到 圖片的名字全都是 數字定義的,所以 current 代表了幀圖片的 順序 我們 在 while True裏面 + 1了嘛。
我們 print 打印 current
當我們打開這類圖像文件時,PIL 自動載入圖像的第一幀。seek 和 tell 方法在各幀之間移動。底層封裝很多東西的,不信自己去看源碼。我這裏不多說。
所以這裏一定要用 seek 和 tell,別自己放入 數字。打腫充胖子