如何基于Python实现人像雪景小程序
发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇文章主要介绍了如何基于Python实现人像雪景小程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。正文开始制作雪景图:1)素材环境
千家信息网最后更新 2024年12月12日如何基于Python实现人像雪景小程序
这篇文章主要介绍了如何基于Python实现人像雪景小程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
正文
开始制作雪景图:
1)素材环境(仅部分)
2)运行环境
本文涉及的环境:Python3、Pycharm、Pygame、PIL模块以及部分自带模块。
模块安装:大家习惯使用什么用什么,使用镜像源安装更快速不容易报错。
pip install +模块名 或带豆瓣镜像源 pip install -i https://pypi.douban.com/simple/ +模块名
3)代码演示
3.1 导入模块
import pygameimport randomimport osfrom PIL import Imagefrom pygame.sprite import Spritefrom pygame.sprite import Groupfrom PIL import ImageGrabimport shutil
3.2 定义雪花❄类、雪花飘落位置、大小等
# 表示单个雪花的类class Snow(Sprite): def __init__(self, image, pos, speed, size, screen): super().__init__() self.screen = screen self.speed= speed self.pos = pos self.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 True return False def add_snow(path): pygame.init() size = Image.open(path).size screen = 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()
3.3 创建"frames"文件夹用于保存每一帧图片
if not os.path.exists("frames"): os.makedirs("frames") flag = True num = 1; while flag: for event in pygame.event.get(): # 退出窗口 if event.type == pygame.QUIT: flag = False screen.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() # 设置fps clock.tick(30) if num >= 250: break num += 1
3.4 制作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)
4)效果展示
每一帧一帧的图片文件夹就不多说,直接给大家展示一列即可。其他的都只展示生成的GIF图就行了哈。
4.1 超可爱小姐姐雪景图。
--原图如下:
--GIF效果图如下:
--每一帧的图片.jpg
4.2 雪景图合集
这里展示的都是效果图,原图懒的上传了!图片太大都传不上来,找了很多方法,掘金传了然后直
接复制到csdn的,所以带着水印撒!可能是我找的图片太高清了~
感谢你能够认真阅读完这篇文章,希望小编分享的"如何基于Python实现人像雪景小程序"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
雪花
图片
模块
雪景
效果
篇文章
环境
人像
程序
位置
原图
大小
效果图
文件
文件夹
部分
镜像
制作
可爱
直观
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
杭州双收网络技术有限
第三方辅助软件开发
网络安全交流会应该交流什么内容
个人能安装数据库吗
五年级护苗网络安全课视频
法制网网络安全法全文
什么是数据库适配器
学校服务器怎样搭建
struts2显示数据库
衢州三禾网络技术
土巴士软件开发
如何优化网贷数据库
网络技术对人的发展的影响
推广网络技术课有什么关键词
网络安全管理与维护论文
深圳前端软件开发
江苏省网络安全协会
软件开发验收确认单
三级网络技术考试在什么软件
ipone创建id服务器出错
湖南网络安全评价服务
淄川oa管理软件开发
什么数据库适合存储文本数据
手机软件开发的知识
万网服务器上内容保存多长时间
数据库思维
申请网络安全经费的报告
导入数据库文件路径
泰安便民平台软件开发系统
河南省国家安全厅网络安全