Python 實現分離GIF圖片,-pillow

在這裏插入圖片描述

大家可以看到這個 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,別自己放入 數字。打腫充胖子

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章