如何基于Python实现人像雪景小程序
发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,这篇文章主要介绍了如何基于Python实现人像雪景小程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。正文开始制作雪景图:1)素材环境
千家信息网最后更新 2024年11月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安全错误
数据库的锁怎样保障安全
滨州戴尔服务器代理哪家服务好
扬州公司网络安全准入控制公司
安新软件开发项目管理
应届生国企软件开发面试问题
网络安全教育读本读后感
软件开发免费教学视频
自动网络技术市场
服务器技术管理教程视频
中标麒麟串口服务器
做软件开发可用苹果电脑吗
戴尔amd服务器订制
java修改数据库指定数据
女性学网络技术难吗
shiro 数据库 权限
怎么查db2数据库的字符集
山东新华互联网科技发布会
网络安全监控是电子围栏么
工业控制网络技术的认识
秀山软件开发系统
唐山市城库网络技术有限公司
溟血网络安全
计算机网络技术所从事的行业
小米显示服务器登录
深圳软件开发累吗
服务器过载或暂停维修怎么办
数据库王珊第五版原文PPT
debas数据库
虎丘区数据网络技术咨询热线
自然界存在最多的服务器
学校网络安全工作计划总结