安裝
可以通過PyPi安裝
或者通過Git
為什麼你需要這個庫?
問:我是一個Python迷, 並且對迷宮的生成和迷宮解決的辦法非常感興趣。 我很羡慕別人能夠做出生成迷宮的動畫。
答:現在, 你可以使用庫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圖元的空白,
然後讓我們運行Prim的迷宮演算法。
其中我加了兩個延遲幀, 以便我們能夠看清楚動畫的過程。
完成了!讓我們把這個動畫保存到GIF檔。
下面是運行結果, 大小小於300K, 很贊吧!
當然, 你也可以把多個演算法整合進一個動畫。
這個庫的原理是什麼?
這個庫實際上是一個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
譯者:詩書塞外