安装
可以通过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
拥抱情人节,星速带你解锁告白新技能!
创芯驱动未来 国产MCU芯片的进击之路
江苏MEMS智能传感器研究院揭牌,致力打造国际领先的传感器研发平台
用于攻防中红队/渗透痕迹隐藏的工具
电解制氢与燃料电池及其相关过程展示
怎样用Python制作迷宫GIF 本文将告诉你诀窍
C语言函数宏怎样实现封装呢?
电气工程施工主要流程的工艺解读
协作机器人的的概念首先应是好用而不是便宜
车载液晶电视显示器专用MCU及设计方案
手机将取代数码相机 数码相机何去何从
在定义、实施和管理多云环境时,组织应遵循以下10条重要实践
北京君正案例:数传网关的集大成者—积木式边缘网关
输气管道NDT无损检测管道腐蚀检测技术服务
极目智能获德国TÜV NORD汽车功能安全最高等级ASIL-D认证
WECC于2021年2月发布2019年全球PCB生产报告
从IBM的历史中寻找答案,探讨这家伟大的美国企业的兴与衰
RISC-V AI单板计算机BeagleV技术分析
工业相机的曝光、曝光时间、快门、增益
一文读懂处理器,内核,芯片三个概念的区别