基于Python實(shí)現(xiàn)拆分和合并GIF動態(tài)圖
“表情包”是當(dāng)前社交軟件上不可或缺的交流方式,難以用文字表達(dá)的意思,發(fā)一個(gè)“表情包”,對方就能心領(lǐng)神會。下面是小派制作的一個(gè)表情包,準(zhǔn)確地講,是在已有表情包的基礎(chǔ)上,二次加工而成的。
下面以最簡單的代碼形式(10行左右),介紹上述“表情包”的制作過程。第一,將GIF動態(tài)圖拆分成圖形幀。下圖是網(wǎng)絡(luò)上找到的一個(gè)GIF格式動態(tài)圖。

利用Python將上述GIF格式動態(tài)圖拆分圖形幀,只需要輸入以下代碼。其中第1-2行是導(dǎo)入os庫、從PIL庫中導(dǎo)入Image函數(shù)功能。第3行是Image.open打開位于D盤路徑下名為“first.gif”的動態(tài)圖。第4行是建立名為“圖形拆分”的文件夾,用于保存拆分后的圖形幀。第5-12是利用try-except異常處理和while循環(huán)查找、保存圖形幀到“圖形拆分”文件夾中。第12行是打印共計(jì)拆分出多少圖形幀。這個(gè)Python拆分GIF動態(tài)圖的代碼也就13行,相對其他方法是非常簡單的。
import os
from PIL import Image
im = Image.open('D:\\Python\\gif\\first.gif')
os.mkdir('圖形拆分')
try:
i = 0
while True:
im.seek(i)
im.save('圖形拆分/'+str(i)+'.png')
i = i +1
except:
pass
print('共拆解圖像幀數(shù)'+str(i))
運(yùn)行上述代碼,便將名為“first.gif”的動態(tài)圖拆分成如下36幀圖形。

第二,對拆分后的圖形進(jìn)行二次加工。比如打上自己喜歡的“臺詞”,這里把“出來浪啦”4個(gè)字打到上述拆分后的圖形上,可以使用Photoshop等圖形處理工具。如果使用Photoshop的話,因?yàn)椴鸱趾蟮膱D形為png格式,直接打開會顯示“索引”狀態(tài),此時(shí)可以通過“圖像”-->“模式”-->“RGB顏色”將png變成圖層,然后通過“移動”-->“頂部對齊/右邊對齊”將多幀圖形圖層疊加對齊,然后再打上“臺詞”并逐個(gè)保存成png,如下圖。當(dāng)然不使用Photoshop,使用其他軟件添加文字也行。這里將二次加工后的圖形保存在“圖形合并”文件夾中,方便第三步操作。

第三,Python將第二步中的圖形幀合并成GIF動態(tài)圖。輸入如下代碼即可:第1行是導(dǎo)入imageio,os模塊,第2行建立一個(gè)名為images的空文件,用于保存多幀圖形。第3行os.listdir()列表化返回“圖形合并”文件夾中所有圖形名。第4-5行for-in循環(huán)讀取列表化的圖形名。第6行imageio.mimsave()生成GIF格式動態(tài)圖,duration=0.1表示每幀圖形間隔0.1秒。這個(gè)Python合并GIF動態(tài)圖的代碼更加簡單,才6行。
import imageio, os
images = []
numberlist = os.listdir('圖形合并')
for i in range(len(numberlist)):
images.append(imageio.imread('圖形合并/'+numberlist[i]))
imageio.mimsave('newfirst.gif',images,'GIF',duration=
保存和運(yùn)行上述代碼,便得到了Python制作的表情包“出來浪啦”。

當(dāng)然現(xiàn)在有很多制作“表情包”的軟件,不需要這么復(fù)雜。但這里主要是感受Python拆分GIF動態(tài)圖成多個(gè)圖形幀,以及合并多個(gè)圖形幀成GIF動態(tài)圖的過程。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python數(shù)據(jù)化運(yùn)營的重要意義
在本篇文章里小編給大家分享的是關(guān)于python數(shù)據(jù)化運(yùn)營的重要意義,有興趣的朋友們可以學(xué)習(xí)下。2019-11-11
Windows系統(tǒng)下pycharm中的pip換源
這篇文章主要介紹了Windows系統(tǒng)下pycharm中的pip換源,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
Scrapy將數(shù)據(jù)保存到Excel和MySQL中的方法實(shí)現(xiàn)
本文主要介紹了Scrapy將數(shù)據(jù)保存到Excel和MySQL中的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
selenium在執(zhí)行phantomjs的API并獲取執(zhí)行結(jié)果的方法
今天小編就為大家分享一篇selenium在執(zhí)行phantomjs的API并獲取執(zhí)行結(jié)果的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
Python的元組和字典知識點(diǎn)超詳細(xì)講解
這篇文章主要介紹了Python中元組和字典兩種數(shù)據(jù)結(jié)構(gòu)的基本用法,包括初始化、索引、拼接、剔除、重復(fù)、最大值和最小值、鍵值查詢、獲取對應(yīng)值、剔除、更新、添加和計(jì)算數(shù)量等操作,需要的朋友可以參考下2025-01-01
關(guān)于Python的GPU編程實(shí)例近鄰表計(jì)算的講解
本文主要講解了Python的GPU編程實(shí)例近鄰表計(jì)算,通過一個(gè)近鄰表計(jì)算的案例,給出了適用于GPU加速的計(jì)算場景。需要了解的朋友可以參考一下這篇文章2021-08-08
Python enumerate遍歷數(shù)組示例應(yīng)用
遍歷數(shù)組的python代碼2008-09-09
opencv+python實(shí)現(xiàn)圖像矯正
這篇文章主要為大家詳細(xì)介紹了opencv+python實(shí)現(xiàn)圖像矯正,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08

