2020庚子年,天干地支纪年第37位;一次大疫情举国哗。平白的多了近10日的假期,习惯上班下班的程序猿类居然开始有些不习惯无所事事,没有指令的工作节奏。

闲来无事难得可以连上网络,索性找些事情做做,以了却无聊乏味。下文给各位看官介绍python中两个工具包的妙用:pygame、pyturtle。

做游戏和幼儿编程的同学对这两个包,应该不陌生。pyturtle可以用来画图。 Turtle的前身是Logo语言,起源时间非常早,一开始是一套用来给小朋友做编程入门的语言。后来被移植到了Python。

pygame是包含图像、声音。建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。基于这样一个设想,所有需要的游戏功能和理念都(主要是图像方面)都完全简化为游戏逻辑本身,所有的资源结构都可以由高级语言提供。

SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。

以一个有趣例子给大家简单介绍这两个库应用:

  • 使用python的turtle库绘制科赫雪花曲线
  • 将雪花保存为png格式的带透明通道的图片
  • 使用pygame加载出背景图和雪花图
  • 使用pygame的精灵模块模拟出雪花下落的动态画面
  • 在pygame的主循环中每次都保存画面
  • 使用PIL库将前面保存的连续画面帧绘制成gif
from turtle import *def Koch(length):if length < 10:fd(length)returnKoch(length/3)lt(60)Koch(length/3)rt(120)Koch(length/3)lt(60)Koch(length/3)def snowflake(n):for i in range(3):Koch(n)rt(120)if __name__ == '__main__':speed(0)up()goto(-100, 100)down()snowflake(500)ht()done()

画雪花

import pygame
import random
import os
from PIL import Image
from pygame.sprite import Sprite
from pygame.sprite import Group
from PIL import ImageGrab
import shutil# 表示单个雪花的类
class Snow(Sprite):def __init__(self, image, pos, speed, size, screen):super().__init__()self.screen = screenself.speed= speedself.pos = posself.image = pygame.transform.scale(image, size)self.rect = self.image.get_rect()self.rect.x = pos[0]self.rect.y = pos[1]def blitme(self):self.screen.blit(self.image, self.rect)def update(self):self.rect.x += self.speed[0]self.rect.y += self.speed[1]# 雪花旋转self.image = pygame.transform.rotate(self.image, 90)if self.check_edges():self.rect.x = self.pos[0]self.rect.y = self.pos[1]def check_edges(self):screen_rect = self.screen.get_rect()if self.rect.top >= screen_rect.bottom:return Truereturn Falsedef add_snow(path):pygame.init()size = Image.open(path).sizescreen = pygame.display.set_mode(size, pygame.NOFRAME)s = pygame.display.get_surface()bg = pygame.image.load_extended(path).convert()screen.blit(bg, (0, 0))# 加载雪花图片snow_image = pygame.image.load_extended('snow.png')snow_group = Group()for i in range(500):# 雪花起始位置pos = (random.randint(-size[0], size[0]), random.randint(-size[1], 0))# 控制雪花大小n = random.randint(4, 12)snow_size = (n, n)# 雪花下落速度speed = (2, random.randint(2, 7))snow_group.add(Snow(snow_image, pos, speed, snow_size, screen))clock = pygame.time.Clock()# 创建文件夹用于保存每一帧图片if not os.path.exists("frames"):os.makedirs("frames")flag = Truenum = 1;while flag:for event in pygame.event.get():# 退出窗口if event.type == pygame.QUIT:flag = Falsescreen.blit(bg, (0, 0))for snow in snow_group.copy():snow.blitme()snow_group.update()# 保存当前画面pygame.image.save(screen, "frames\\"+str(num)+".jpg")# 刷新屏幕pygame.display.update()# 设置fpsclock.tick(30)if num >= 250:breaknum += 1# 制作GIF图im = Image.open("frames\\1.jpg")images = []size = (int(im.size[0]/2), int(im.size[1]/2))for file in range(2, num + 1):filepath = "frames\\" + str(file) + ".jpg"temp = Image.open(filepath)temp = temp.resize(size, Image.ANTIALIAS)images.append(temp)im = im.resize(size, Image.ANTIALIAS)im.save('snow.gif', save_all=True, append_images=images, loop=2, duration=5)# 删除保存中间图片文件的文件夹shutil.rmtree("frames")if __name__ == '__main__':add_snow('background.jpg')

加载雪花,精灵控制雪花,生成gif动图

今天时间就打发到这里了,

给静态图片添加动态效果相关推荐

  1. c语言静态图片做成动态效果,如何使静态图片做成动态效果?怎么让静态图片动起来...

    原标题:如何使静态图片做成动态效果?怎么让静态图片动起来 如果用手机拍了一组张片,想要将这些静态图片合成动态的该怎么操作呢?将多张图片合成一张gif动图的方式,既能够占据更少的内存,还能够提升图片的趣 ...

  2. c语言静态图片做成动态效果,怎样把图片做成动态图 两张静态图片加过渡效果制作成gif动图...

    近日有朋友问小编说:有两张带文字的图片文件,想要制作成gif格式的动图,并且这两张图片要加上自然的过渡效果,这样怎么制作呢?其实咱们狸窝家园也是有挺多图片制作成gif动图的方法的,只是要添加自然的过渡 ...

  3. gif加字php,『GIF图片添加文字』如何在gif上添加文字 仍然保持gif动态效果

    某位狸友咨询我,说是自己刚学会了从GIF图片添加文字软件,轻戳此处下载http://www.leawo.cn/ND_upload.php?do=info&id=3406 按国际惯例,先看看效果 ...

  4. php合并多张gif图,多张静态图片合成一张动态图-静图合成动图制作

    现如今制作gif图片也不是什么难事了,巧用动态图合成软件,即能轻松将多张静态图片合成一张动态图.动态图片是由多张不同的静态图片组合而成的gif格式图片,它会按照一定的顺序和时间进行逐帧播放.做好的动态 ...

  5. gif加文字 php,gif动态图片添加文字 gif制作软件 怎样给gif动态图片添加文字

    gif动态图片添加文字 gif制作软件 怎样给gif动态图片添加文字 现在有各种各样的表情包.搞笑图片以及搞笑视频都深受大家的喜爱,之前咱们也有一起学习过怎样用视频制作gif动态图片,相信大家肯定还记 ...

  6. Vue-在data中引入静态图片路径

    在data中引入静态图片路径 首先tempate中内容都一样: <template slot="pic" slot-scope="{ row }"> ...

  7. java对静态图片/Gif图片/视频进行水印

    对静态图片/Gif图片/视频进行水印 刚开始写博客.我用在公司里写的视频/图片/gif图片水印分享出来.有任何不当之处请尽情指出.本人qq:2768861003 静态图片水印 静态图片水印,主要是通过 ...

  8. java为word、excel、pdf、ppt、图片添加图片水印(文字水印同理)

    使用idea开发,所需依赖如下: spire的下载.使用,代码中会给出网址.idea中选中右键,添加为库即可使用 <!--使用spire,导入的jar--> <dependency& ...

  9. 在html中加入一个动态图,图片上加gif图片 图片某个角落贴个gif动态图,如何在静态图片上面加一张GIF动态图...

    喜欢上网的小伙伴就会知道网上流传灰常广泛一种搞笑gif动态图片,这类图片大部分是视频转gif的,就是截取视频经典搞笑画面制作而成,还加了些搞笑文字.使用网络聊天工具尤其是QQ就最常见了,那些搞笑的表情 ...

最新文章

  1. MPLS 具有哪些特点?——Vecloud
  2. 去掉PE文件随机基址的方法
  3. mysql-增删改(DML)
  4. java obix_obix协议在java中的配置和使用详解
  5. iOS IM开发建议(一)App框架设计
  6. 实用分层模板,分分钟了解UI界面设计基本原则!
  7. 剑指offer之链表中环的入口结点
  8. zabbix--从入门到精通之zabbix历史数据
  9. 1 linux中解决文件已rm删除但空间不释放的案例
  10. 超级详细的Maven使用教程
  11. 小莫取色精灵 使用教程_MQ
  12. Linux 配置No module named enchant
  13. 基金销售:基金转换与超级转换
  14. 7个趣味性超高的国产APP,总有一个能让你赞不绝口!
  15. 【漏洞复现-EmpireCms-文件上传】vulfocus/empirecms-cve_2018_18086
  16. 一文看懂人工智能语音芯片
  17. eve-ng学习笔记
  18. apicloud影视解析APP源码 HTML
  19. 计算机图形学与opengl C++版 学习笔记 第5章 纹理贴图
  20. 蓝桥杯 逗志芃的危机

热门文章

  1. 【ZZULIOJ】1053: 正弦函数
  2. 10款最佳在线地图软件介绍
  3. speedoffice(PPT)怎么给文字加粗
  4. 将cookie字符串转成editthiscookie插件的json格式
  5. 十进制与二进制的转换
  6. Transformer解读之:Transformer 中的 Attention 机制
  7. Goddy服务器配置
  8. C# Minitab Sigma 无偏常量
  9. 基于STM32的智能篮球测温记分记时系统
  10. python罗马数字转换阿拉伯数字_Python将阿拉伯数字转换为罗马数字的方法