安装

可以通过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方法时,动画才会真正地被存入图片。

深度资料

python设计迷宫_用Python制作迷宫GIF相关推荐

  1. python设计樱花_用Python画樱花?想得美就能画得美(上)

    前段时间疯传的武大学生用Python代码画出樱花,暗藏"武汉加油",好感人的. 不过他们的代码并不是"画"樱花,而是剪辑一段樱花的视频,把其中的像素替换为&qu ...

  2. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  3. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  4. python管理系统设计_基于Python和Django框架的物联网智能设备管理系统的设计与实现

    杨武帅 万启元 桑贤伯 摘 要:针对目前日益增多的智能设备提出了兼容性好,稳定性高,易于管理的管理系统的设计方法.在服务器端使用Python和Django框架进行与设备的数据交互及设备管理网站的构架, ...

  5. 机械专业与python的联系_使用python进行机械设计计算

    分析 这一过程的核心在于机械设计,python的编程的用途有两个 1.当作计算器,缺点在于没有casio计算器那样的自然显示,优点在于可以反复调用,使用lambda函数简化运算 2.当设计需要修改时, ...

  6. python樱花树的设计思路_用python绘制樱花树

    黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开.那么今天就一起来看看怎样在python中画一棵美丽的樱花树- 说到用python画画,那当然就是小乌龟Turtle库了,为啥是t ...

  7. python 创意项目_针对python开发人员的10个很棒的python项目创意

    python 创意项目 The joy of coding Python should be in seeing short, concise, readable classes that expre ...

  8. python机器学习预测_使用Python和机器学习预测未来的股市趋势

    python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...

  9. python 免费空间_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

  10. python培训班-Python培训机构_高品质Python线下开发培训班推荐-黑马程序员

    Python编程基础基础班1 课时:15天技术点:97项测验:2次学习方式:线下面授 学习目标 1.掌握Python开发环境基本配置|2.掌握运算符.表达式.流程控制语句.数组等的使用|3.掌握字符串 ...

最新文章

  1. Android 分享控件
  2. vim的全局替换[zz]把字符替换成回车
  3. 2016.8.1今天是建军节
  4. Android 6.0动态权限
  5. 常见设备分辨率大小,响应式必备啊
  6. 自动ping博客服务程序
  7. java fileupload 文件_java用Commons fileupload 文件的上传
  8. 高通宣布与华为达成新专利授权协议,华为砸下18亿美元
  9. Jenkins+GitLab+Docker+SpringCloud+Kubernetes实现可持续自动化微服务
  10. 红孩子艰难求生 苏宁易购或伸援手
  11. ******2:***常用工具排行榜-《百晓生兵器谱》
  12. 【边缘检测】基于matlab蚁群算法图像边缘检测【含Matlab源码 1189期】
  13. JavaWeb:(练习)十二、简单的学生管理系统
  14. ssdp协议 upnp_【零知ESP8266】教程:SSDP简单服务发现协议示例
  15. 有什么比较适合个人日常办公管理的便签软件
  16. 安装Bouncy Castle(JAVA)
  17. 百练noi21:二维数组右上左下遍历,24:蛇形填充数组
  18. 2021Java面经:【漫画(2)
  19. ZUCC_计算机网络实验_实验01 实验一RJ45原理与制作
  20. 记录自己的第一次php实习生面试经验

热门文章

  1. UML建模之用例图(重点讲extend和include关系)
  2. 怎么提高国外服务器速度?
  3. 数学在计算机方面的应用论文参考文献,数学论文参考文献
  4. 远程计算机的凭据无法工作,Windows远程桌面时提示凭证不工作问题的解决办法...
  5. 疫情下的春招实习历程
  6. SwiftUI 色彩教程之 01什么是色差Color difference
  7. omf多路径 oracle_Oracle OMF 功能详解
  8. Pandownload 开发者被抓了,但是其背后,百度难道不需要反思吗?(转载)
  9. 带你学C带你飞 | printf函数 | 变量 | 常量和宏定义 | 数据类型 | 取值范围 | 字符串 | 运算符
  10. 网站点击弹窗微信二维码功能纯CSS