如何基于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实现人像雪景小程序”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!

发布于 2021-12-22 21:58:22
收藏
分享
海报
0 条评论
43
上一篇:SQL语言的查询方法有哪些 下一篇:Vue中lazyload图片懒加载得示例分析
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码