GIF(Graphics Interchange Format,圖形交換格式)是一種“位圖”圖像格式,它以.gif作為圖像的擴展名。GIF 圖片非常適合在互聯(lián)網(wǎng)中使用,這是因為它采用了圖像預(yù)壓縮技術(shù),該技術(shù)的應(yīng)用,在一定程度上減少了圖像傳播、加載所消耗的時間。
與其他格式的圖片相比,GIF 還有一項非常重要的應(yīng)用,那就是生成動態(tài)圖。我們知道,Pillow 能夠處理多種圖像格式,包括 GIF 格式,它可以將靜態(tài)格式圖片(png、jpg)合成為 GIF 動態(tài)圖。
注意:Pillow 總是以灰度模式(L)或調(diào)色板模式(P)來讀取 GIF 文件。
下面看一組示例:如何使用 Pillow 生成 GiF 動態(tài)圖。(示例中所用圖片素材取自上一小節(jié)中分解出來的gif)
import os
import random
from PIL import Image
def png_to_gif(png_path,gif_name):
"""png合成gif圖像"""
frames = []
# 返回文件夾內(nèi)的所有靜態(tài)圖的列表
png_files = os.listdir(png_path)
# 打印返回的列表
print(png_files)
# 讀取文件內(nèi)的靜態(tài)圖
for frame_id in range(0,len(png_files)):
frame = Image.open(os.path.join(png_path,'%d.png'%frame_id))
frames.append(frame)
# 以第一張圖片作為開始,將后續(xù)5張圖片合并成 gif 動態(tài)圖
# 參數(shù)說明:
# save_all 保存圖像;transparency 設(shè)置透明背景色;duration 單位毫秒,動畫持續(xù)時間,
# loop=0 無限循環(huán);disposal=2 恢復(fù)原背景顏色。參數(shù)詳細說明,請參閱官方文檔,網(wǎng)址見文章末尾處。
frames[0].save(gif_name,save_all=True,append_images=frames[1:],transparency=0,duration=2000,loop=0,disposal=2)
#調(diào)用函數(shù),傳入對應(yīng)的參數(shù)
png_to_gif("./image",'合成.gif')
動態(tài)效果圖,如下所示:
更多建議: