2020年的开头并不顺利,有不少朋友希望能够重启2020。然而时光不可倒流,我们都应该学会积极的向前看。

我们可以给自己的2020年立下Flag,或者说给自己在这剩下的11个月里定下小目标,并不断为之努力。

今天我们就用这万能的Python来做自己的2020专属Flag动图。整个动图制作可以分为如下几步,将愿望写入图片,循环播放图片形成gif的效果或者直接合成图片生成动图。

图片制作

我找了一张符合主题的背景图,简单而不失优雅的中国红,福气满满的剪纸画。

以此图为背景,在中央空白处写下自己的愿望,即给图片添加文字,这里用到了pillow库来新建画布,并描绘出黑色字体。

def add_font(text,i):font=ImageFont.truetype('simhei.ttf', 80) img=Image.open('a.jpg')draw=ImageDraw.Draw(img) draw.text((110,110),text,(0,0,0),font=font)img.save('pic/{}.png'.format(i))

其文本位置和大小以及字体都可以在代码中进行控制,整体效果如下,

图片轮播

想要达到gif的效果,最直接的想法便是将图片不断地播放,这里我们用到了另外一个图像处理的常用库opencv,cv2.waitKey()函数在参数不为零的时候可以和循环结合产生动态画面,即图片轮播

def pic_cycle():path="pic"filenames=os.listdir(path)img_iter=cycle([cv2.imread(os.sep.join([path, x])) for x in filenames])while 1:cv2.imshow('window title', next(img_iter))cv2.waitKey(500)

通过itertools.cycle生成一个无限循环的迭代器,每一次迭代都输出下一张图片,通过更改cv2.waitKey的参数,可以调整图片轮播的速度。

图片合成

如果不但想要生成动图的效果,还想要直接以gif的形式保存下来便可以用到imageio库,这个库提供了多张图片合成gif动图的函数mimsave,可以通过调节参数fps调节图片轮播的速度。

def make_gif():gif_images=[]img_paths=os.listdir('pic')img_paths=[os.sep.join(['pic',i]) for i in img_paths]for path in img_paths:gif_images.append(imageio.imread(path))imageio.mimsave("a.gif",gif_images,fps=2)

效果展示

我在代码中写入了自己的Flag, 你们也来动手制作吧!

opencv python 生成画布_用Python做自己的2020专属Flag动图相关推荐

  1. 如何用python生成表格_用 Python 生成 HTML 表格

    在 邮件报表 之类的开发任务中,需要生成 HTML 表格. 使用 Python 生成 HTML 表格基本没啥难度, for 循环遍历一遍数据并输出标签即可. 如果需要实现合并单元格,或者按需调整表格样 ...

  2. opencv python 生成画布_第16章 坚持一百秒(《Python趣味创意编程》教学视频)

    (图书介绍:童晶:<Python趣味创意编程>新书预告) 本章我们将实现坚持一百秒的游戏,玩家通过移动人脸控制飞碟躲避越来越多的反弹子弹,效果如图所示.首先利用面向对象的知识,实现了一个鼠 ...

  3. python生成簇_使用Python复现SIGKDD2017的PAMAE算法(并行kmedoids算法)

    作者:坚新 研究方向:自然语言处理 https://github.com/yangjianxin1/PAMAE 编者按:AINLP技术群的坚新同学发布了一个新项目:PAMAE (PAMAE: Para ...

  4. python生成统计图_用python Linux(无GUI)中生成统计图

    我有这样一个需求:在我的raspberry pi 3中运行着一个爬虫程序,根据爬到的数据,使用matplotlib自动生成统计图(图片格式),然后发送到我的邮箱. 但是我ssh远程登录树莓派,运行如下 ...

  5. python生成日历_使用Python实现简易月历生成(2)

    生成日历主程序的函数结构和注释:#此功能用于在place处追加字体为f_name,字号为f_size,内容为content的细/粗体字 def convert_text(place, f_name, ...

  6. python清空画布_关于python:如何清除Tkinter画布?

    当我使用以下方法绘制形状时: canvas.create_rectangle(10, 10, 50, 50, color="green") Tkinter是否跟踪其创建的事实? 在 ...

  7. python生成等值线_在python中生成X,Y数据的等值线图

    嗨,我不确定这是否已经被问过了,但我找不到一个满足我的答案.在 如果你有X,Y和温度数据,请看下面的例子.如何在python中绘制数据的温度等值线X Y Temp 0 0 23 0.1 0 23 0. ...

  8. python生成日历_使用python生成ical日历文件——将课程表导入到手机日历

    1 importdatetime,os2 3 classEvent:4 """ 5 事件对象6 """ 7 def __init__(sel ...

  9. python生成表达式_说说 Python 的生成器表达式

    列表推导与生成器表达式都可以用于初始化元组.数组或其他类型的序列.但列表推导需要先建立一个完整的列表,然后再把这 个列表传递到某个构造函数.而生成器表达式会逐个产出元素,这样显然能够节省内存. 列表推 ...

最新文章

  1. 2018最受欢迎机构公众号:亲爱的读者,请你为我们投票
  2. C++学习网站。两个 CodeProject,Codeguru
  3. 八十六、从拓扑排序探究有向图
  4. Java 7 vs Groovy 2.1性能比较
  5. 孙鑫MFC笔记之十五--进程间通信
  6. 中jsp加载不出来layui_Maven+JSP+SSM+Mysql实现的学生选课系统
  7. XX数据中心技术方案
  8. Android HttpClient Session保持
  9. 泛微OA中怎么导入html模板,如何在OA系统中设置模板标题
  10. 蓝桥杯 明码题解 【Java实现】
  11. MFC学习之路(五)让人菊花一紧的错误
  12. Unity将相机内容输出成图片
  13. pfSense软路由防火墙
  14. android 锁屏界面 sim卡,注意!手机的这个密码比锁屏密码更重要,赶紧设置!攻略→...
  15. 2021-5-11 atcoder C - Replacing Integer
  16. RPA风潮席卷全行业,本土厂商如何把握未来?
  17. linux中设置ssh登录时显示的banner
  18. Python 为何能坐稳 AI 时代头牌语言
  19. NEW LOOK:利用SCRM营销体系线上线下消费结合,引爆O2O营销
  20. 【小李木耳】2012年5月高兴事:哈尔滨集散中心成立、商标正式申请!

热门文章

  1. 导入表编程-枚举导入表
  2. 设计模式-UML图简单介绍
  3. hdu4740 不错的简单搜索
  4. hdu1711 KMP模板
  5. 计算机网络-RIP协议
  6. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )
  7. 【OpenGL】二、Visual Studio 2019 配置 GitHub ( 下载并安装 GitHub 扩展 | 配置 GitHub )
  8. 【Netty】Netty 核心组件 ( ChannelHandlerContext )
  9. 关于SQL视图的创建和使用方法
  10. nginx静态资源反向代理