如何基于Python实现人像雪景小程序
如何基于Python实现人像雪景小程序
这篇文章主要介绍了如何基于Python实现人像雪景小程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
正文
开始制作雪景图:
1)素材环境(仅部分)
2)运行环境
本文涉及的环境:Python3、Pycharm、Pygame、PIL模块以及部分自带模块。
模块安装:大家习惯使用什么用什么,使用镜像源安装更快速不容易报错。
pipinstall+模块名或带豆瓣镜像源pipinstall-ihttps://pypi.douban.com/simple/+模块名
3)代码演示
3.1 导入模块
importpygameimportrandomimportosfromPILimportImagefrompygame.spriteimportSpritefrompygame.spriteimportGroupfromPILimportImageGrabimportshutil
3.2 定义雪花❄类、雪花飘落位置、大小等
#表示单个雪花的类classSnow(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]defblitme(self):self.screen.blit(self.image,self.rect)defupdate(self):self.rect.x+=self.speed[0]self.rect.y+=self.speed[1]#雪花旋转self.image=pygame.transform.rotate(self.image,90)ifself.check_edges():self.rect.x=self.pos[0]self.rect.y=self.pos[1]defcheck_edges(self):screen_rect=self.screen.get_rect()ifself.rect.top>=screen_rect.bottom:returnTruereturnFalsedefadd_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()foriinrange(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“文件夹用于保存每一帧图片
ifnotos.path.exists("frames"):os.makedirs("frames")flag=Truenum=1;whileflag:foreventinpygame.event.get():#退出窗口ifevent.type==pygame.QUIT:flag=Falsescreen.blit(bg,(0,0))forsnowinsnow_group.copy():snow.blitme()snow_group.update()#保存当前画面pygame.image.save(screen,"frames\\"+str(num)+".jpg")#刷新屏幕pygame.display.update()#设置fpsclock.tick(30)ifnum>=250:breaknum+=1
3.4 制作GIF图,效果就更加直观了
im=Image.open("frames\\1.jpg")images=[]size=(int(im.size[0]/2),int(im.size[1]/2))forfileinrange(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实现人像雪景小程序”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!
推荐阅读
-
python(中无效的十进制怎么解决 python怎么转换进制)
python怎么转换进制?Python执行二进制转换:1.十进制到二进制(bin)首先,让让我们看看如何将十进制转换成二进制。我...
-
python怎么清除完全相同的行(python splte如何分隔有多个相同符号的str)
pythonsplte如何分隔有多个相同符号的str?str你的string内容str_(相同的符号)执行完了以后再在相同符号的...
-
python(编程控制电脑关机 如何控制电脑关机)
如何控制电脑关机?可以在电脑的运行窗口中输入输入公式,给电脑可以设置自动关机。1.按开快捷键winr然后打开运行窗口。2.在运行窗...
-
python中的特殊标识符(python 中 标识符中可以有逗号吗)
python中标识符中可以有逗号吗?在python语言中合法的标识符是字母、数字以及_,所以我合法的标识符中肯定不能有逗号if...
-
python(excel 提取数据写入新表 python导入excel数据找不到工作簿)
python导入excel数据找不到工作簿?我可以导入数据后找不到工作,不是因为他的工作没有被转移。什么软件可提取并合并Exce...
-
python中字典定义的四种方法(python global关键字的用法详解)
pythonglobal关键字的用法详解?global标志实际上是目的是提示python讲解器,说被其修饰的变量是全局变量。这样...
-
python(array用法 python如何对两个数组做差处理)
python如何对两个数组做差处理?Python中的列表中的元素肯定不能真接相加,减。t最佳的位置的是将列表装换成Python中的...
-
python多行注释符号怎么表示
python多行注释符号怎么表示这篇文章主要介绍“python多行...
-
python支持的操作系统是什么
python支持的操作系统是什么这篇文章主要介绍“python支持...
-
python如何判断列表为空
python如何判断列表为空这篇文章主要介绍“python如何判断...