原标题:用Python制作迷宫GIF

安装

可以通过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

译者:诗书塞外

*声明:推送内容及图片来源于网络,部分内容会有所改动,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

- END -

责任编辑:

python制作动图-用Python制作迷宫GIF相关推荐

  1. python画动图-利用Python如何制作好玩的GIF动图详解

    前言 之前我们分享过用Python进行可视化的9种常见方式.其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Python和matplotlib制作GIF图表. 假如电脑上没有 ...

  2. 利用Python制作动图演示坐标变换理论

    利用Python制作动图演示坐标变换理论 永磁同步电机是一个非线性.强耦合的物理系统,因而不便直接进行控制.后有研究人员创造性的提出了坐标变换理论(后逐渐成为矢量控制的一个部分),让永磁同步电机得以转 ...

  3. 怎么快速做动态图?gif动图在线怎么制作?

    相信很多小伙伴的工作中都会涉及到使用gif格式图片,但是在制作的时候使用的工具可能会操作比较的麻烦,那么在不下载软件的情况下,是否可以在线制作gif动图呢?下面小编来给大家分享一款在线gif制作工具- ...

  4. 动图如何在线制作?教你一键在线制作动图

    相信不少小伙伴都想要自己制作gif动图,由于很多小伙伴并不知道动态图片怎么制作,所以就会选择从网上寻找gif在线制作的方法.但是网上很多制作gif动图的工具使用起来比较麻烦的时候应该怎么办呢?这时候, ...

  5. 在java程序中制作动图

    一.前言 突然来了个课程设计,憋了几天没写博客,今天来分享一下这次课程设计中开的一个脑洞:在程序界面上显示动图 二.制作背景 这次课设有一部分是文件传输的内容,用户点击某按钮后开始传输文件到服务器.因 ...

  6. Qt—绘图与定时器(制作动图)

    绘图使用画家类QPainter void Dialog::paintEvent(QPaintEvent *event) {QPainter painter(this);//在此文本框绘图//前两个参数 ...

  7. r语言 html gif,推荐 :6步教你用R语言制作动图

    原标题:推荐 :6步教你用R语言制作动图 引言 数据可视化可能是数据科学领域最重要却通常最少被提及的部分. 我这么说是因为创造数据故事和可视化对你的顾客最终怎么看待你的工作有巨大的影响.数据科学不仅仅 ...

  8. MATLAB制作动图并保存

    目的 制作PPT时常常会使用到动图,自己录屏制作实在是太麻烦,就琢磨了一下MATLAB制作动图的方法,网上找的教程学习了一下. 一通百通,只简单做了个正弦曲线的动图 过程 存成的曲线如下图所示: 程序 ...

  9. MATLAB制作动图或视频

    (来点有用的)MATLAB制作动图或视频 主要函数介绍 情况一:对数据进行操作 情况二:对界面进行操作 其他 by HPC_ZY 在CSDN发现一个类似的居然要VIP才能查看,顿时有点无语,所以自己做 ...

最新文章

  1. 十进制转化为十六进制分割高低位
  2. mysql经典45道题_MySQL45道面试题及答案
  3. 5种云计算安全基础知识和最佳实践
  4. Python pip – error: invalid command ‘bdist_wheel’
  5. lambdas 排序_Java8 Lambdas:解释性能缺陷的排序
  6. irobot擦地机器人故障_33款扫地机器人口碑:售价6350元的戴森口碑垫底,小米、科沃斯谁更好用?...
  7. BTC 5分钟内跌幅1.02%,现价38142.29usdt
  8. 虚拟化安全:瑞星的下一个战场
  9. Linux操作系统中ps命令常见用法
  10. 树莓派 4b 可执行文件 无法双击运行_树莓派01 - 树莓派系统安装
  11. 20.20 告警系统主脚本;20.21 告警系统配置文件;20.22 告警系统监控项目
  12. 项目管理project模板_项目管理常用的10张图表推荐
  13. ecos kernel 分析 转自黑嘴公 PiPi Cat
  14. 从PROXMOX群集中安全删除节点
  15. kettle8.3-win安装操作指南
  16. 基于Tushare的上证综指行情分析与影响其涨跌的因素(以美债为例)
  17. java 导出csv文件通过web下载
  18. 战意显示与服务器断开连接,战意不删档6.8开启 服务器竟然可以这样开
  19. 【视频号推广】小程序怎么申请推广,以及怎么给自己的视频号推广
  20. java画板中画直线_java实现画图板上画一条直线

热门文章

  1. 识别TLS加密恶意流量
  2. ES shrink ——一般是结合rollover一起使用的,一开始没有看懂官方shrink文档,当看了这个之后就明白了...
  3. SoC嵌入式软件架构设计之中的一个:系统内存需求评估
  4. iOS获取已安装的app列表(私有库)+ 通过包名打开应用
  5. 原生js给div添加类
  6. 软工随堂练 找出和值最小的子数组 尹亚男 赵静娜
  7. Hdu 1217 最短路.cpp
  8. 数据挖掘技术简介[转]
  9. 11-机器学习开发流程--初识
  10. [刘阳Java]_Web前端入门级练习_迅雷官宣网设计