如何基于Python实现人像雪景小程序
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍了如何基于Python实现人像雪景小程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。正文开始制作雪景图:1)素材环境
千家信息网最后更新 2025年02月01日如何基于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安全错误
数据库的锁怎样保障安全
全境封锁2 无法连接服务器
无人机行业软件开发
网易游戏服务器名称
佛山市骏乘网络技术有限公司
网络技术的原理是什么
暴雨软件开发
网络安全红包补贴
长宁区信息化网络技术哪家好
小爱同学是什么软件开发的
dnf服务器喇叭不能用
服务端软件开发
网络安全基础性作用靠谁发挥
网络安全模式下怎样打印文件
怎样打开数据库分区
网络安全防护体系的ioc
软件开发企业盈利模式
张家港营销网络技术服务价格
轨道交通网络技术
山东前端软件开发
软件开发预算材料
几种软件开发模型的对比
理财类app软件开发
各地党委对本地网络安全
计算机三级网络技术全称
去广告软件开发
中科曙光620服务器功率
mssql数据库错误
领导干部网络安全培训
设计petstore数据库
赤壁市杰封网络技术