安裝
可以透過PyPi安裝
或者透過Git
為什麼你需要這個庫?
問:我是一個Python迷,並且對迷宮的生成和迷宮解決的辦法非常感興趣。我很羨慕別人能夠做出生成迷宮的動畫。我如何能夠用Python自己做一個迷宮動畫,然後把我的成果展示給其他人呢?(我知道tkinter, pyglet 和 pyqt,但是它們很難釋出給別人看)
答:現在,你可以使用庫gifmaz來做這件事了,它有一些很好的特性:
1、它是純Python編寫的,沒有第三方依賴,只使用內建模組!(如果你想把動畫嵌入圖片,那麼你需要PIL,PIL雖然不是內建模組,但是任何Python版都支援PIL。除此之外再沒有其他的依賴了)
2、它執行速度很快,而且幾秒鐘就能生成最佳化過的GIF圖片。每個GIF通常都包含上千幀,但是GIF大小確只有幾百KB。
3、你可以繪製各種各樣的迷宮動畫,和解迷宮動畫。
4、程式碼都有很好的註釋,檔案有很好的範例,而且檔案很完整。
這個庫的一個教程
首先我們需要構建一個GIFSurface物件(類似cairo的ImageSurface類),我們的動畫將會畫在這個物件上。同時,我們需要指定圖片的大小和可用的顏色數量。
這裡color_depth=2意味著調色盤中有2^2=4種顏色,bg_color=0說明調色盤中的第0個顏色被作為背景色。
只要你還沒有最後儲存圖片,你都可以更改設定調色盤,你可以這樣做
所以圖片中可以用的顏色有:黑、白、品紅、黑。
然後我們構建一個環境,生成的動畫基於這個環境構建(類似cairo的Context類)。
然後我們設定這個動畫的控制引數
這些引數的意思是“每20步渲染一幀,幀之間間隙0.05s,調色盤中第四個顏色作為通明度通道”。
我們有了繪製動畫的“桌面”,和繪製動畫需要的引數,接下來就是實際地畫一個迷宮了。
這個陳述句在圖片中央繪製了一個迷宮,然後在四邊留了8畫素的空白,迷宮中每一格在圖片中佔據5畫素*5畫素的大小。
然後讓我們執行Prim的迷宮演演算法。
其中我加了兩個延遲幀,以便我們能夠看清楚動畫的過程。
完成了!讓我們把這個動畫儲存到GIF檔案。
下麵是執行結果,大小小於300K,很贊吧!
當然,你也可以把多個演演算法整合進一個動畫。下麵的動畫展示了隨機深度優先搜尋演演算法和A*搜尋演演算法。(這個圖片只有120K)
這個庫的原理是什麼?
這個庫實際上是一個GIF的編碼庫,演演算法執行過程中,動畫幀被編碼為BytesIO檔案。只有在呼叫save方法時,動畫才會真正地被存入圖片。
深度資料
1、什麼是GIF:http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp。
2、迷宮生成演演算法:http://weblog.jamisbuck.org/2011/2/7/maze-generation-algorithm-recap
英文原文:https://github.com/neozhaoliang/gifmaze
譯者:詩書塞外
《Python人工智慧和全棧開發》2018年07月23日即將在北京開課,120天衝擊Python年薪30萬,改變速約~~~~
*宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。
– END –
更多Python好文請點選【閱讀原文】哦
↓↓↓