安裝
可以通過(guò)PyPi安裝
或者通過(guò)Git
為什么你需要這個(gè)庫(kù)?
問(wèn):我是一個(gè)Python迷,并且對(duì)迷宮的生成和迷宮解決的辦法非常感興趣。我很羨慕別人能夠做出生成迷宮的動(dòng)畫。我如何能夠用Python自己做一個(gè)迷宮動(dòng)畫,然后把我的成果展示給其他人呢?(我知道tkinter, pyglet 和 pyqt,但是它們很難發(fā)布給別人看)
答:現(xiàn)在,你可以使用庫(kù)gifmaz來(lái)做這件事了,它有一些很好的特性:
1、它是純Python編寫的,沒(méi)有第三方依賴,只使用內(nèi)置模塊?。ㄈ绻阆氚褎?dòng)畫嵌入圖片,那么你需要PIL,PIL雖然不是內(nèi)置模塊,但是任何Python版都支持PIL。除此之外再?zèng)]有其他的依賴了)
2、它運(yùn)行速度很快,而且?guī)酌腌娋湍苌蓛?yōu)化過(guò)的GIF圖片。每個(gè)GIF通常都包含上千幀,但是GIF大小確只有幾百KB。
3、你可以繪制各種各樣的迷宮動(dòng)畫,和解迷宮動(dòng)畫。
4、代碼都有很好的注釋,文檔有很好的范例,而且文檔很完整。
這個(gè)庫(kù)的一個(gè)教程
首先我們需要構(gòu)建一個(gè)GIFSurface對(duì)象(類似cairo的ImageSurface類),我們的動(dòng)畫將會(huì)畫在這個(gè)對(duì)象上。同時(shí),我們需要指定圖片的大小和可用的顏色數(shù)量。
這里color_depth=2意味著調(diào)色板中有2^2=4種顏色,bg_color=0說(shuō)明調(diào)色板中的第0個(gè)顏色被作為背景色。
只要你還沒(méi)有最后保存圖片,你都可以更改設(shè)置調(diào)色板,你可以這樣做
所以圖片中可以用的顏色有:黑、白、品紅、黑。
然后我們構(gòu)建一個(gè)環(huán)境,生成的動(dòng)畫基于這個(gè)環(huán)境構(gòu)建(類似cairo的Context類)。
然后我們?cè)O(shè)置這個(gè)動(dòng)畫的控制參數(shù)
這些參數(shù)的意思是“每20步渲染一幀,幀之間間隙0.05s,調(diào)色板中第四個(gè)顏色作為通明度通道”。
我們有了繪制動(dòng)畫的“桌面”,和繪制動(dòng)畫需要的參數(shù),接下來(lái)就是實(shí)際地畫一個(gè)迷宮了。
這個(gè)語(yǔ)句在圖片中央繪制了一個(gè)迷宮,然后在四邊留了8像素的空白,迷宮中每一格在圖片中占據(jù)5像素*5像素的大小。
然后讓我們運(yùn)行Prim的迷宮算法。
其中我加了兩個(gè)延遲幀,以便我們能夠看清楚動(dòng)畫的過(guò)程。
完成了!讓我們把這個(gè)動(dòng)畫保存到GIF文件。
下面是運(yùn)行結(jié)果,大小小于300K,很贊吧!
當(dāng)然,你也可以把多個(gè)算法整合進(jìn)一個(gè)動(dòng)畫。下面的動(dòng)畫展示了隨機(jī)深度優(yōu)先搜索算法和A*搜索算法。(這個(gè)圖片只有120K)
這個(gè)庫(kù)的原理是什么?
這個(gè)庫(kù)實(shí)際上是一個(gè)GIF的編碼庫(kù),算法運(yùn)行過(guò)程中,動(dòng)畫幀被編碼為BytesIO文件。只有在調(diào)用save方法時(shí),動(dòng)畫才會(huì)真正地被存入圖片。
深度資料
1、什么是GIF:http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp。
2、迷宮生成算法:http://weblog.jamisbuck.org/2011/2/7/maze-generation-algorithm-recap
-
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84787 -
GIF
+關(guān)注
關(guān)注
0文章
24瀏覽量
6596
原文標(biāo)題:用Python制作迷宮GIF
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論