知行编程网知行编程网  2022-05-04 04:00 知行编程网 隐藏边栏 |   抢沙发  3 
文章评分 0 次,平均分 0.0

80行代码!用Python做一个哆来A梦分身

对于分身术,大家想必都或多或少的从《火影忍者》的动漫上看到过,炫酷的影分身场面,每每看到都觉得非常过瘾。


今天,小编其实是蓝胖子的铁粉,满满的童年回忆啊!今天Python来实现一个简单的哆啦A梦分身术,看看python是如何实现影分身之术。



01.技术设计


要达到影分身的效果,需要一个背景图片和一个前景图片。我们以背景图片为基础,然后不断的在背景图片上添加前景图片,从而达到影分身的效果。这里我们采用python内置的turtle库来实现这一效果。


但是turtle库对于图片的使用,只能是gif格式的图片,这就带来了新的问题,那便是如何获取gif图片,我们平时使用的大都是jpg和png格式的图片。我们需要将jpg和png的图片转化为gif格式。



02.难点处理


对于前景和背景,通常是采用png和jpg格式的图片,因为png格式图片带有透明度,这样的话,将其放置在背景图片中不会存在背景而显得很突兀。普通的png转gif的方式,会丢失掉png图片的透明度,从而导致最后的结果中前景图片存在背景,从而出现下面的这种结果:


80行代码!用Python做一个哆来A梦分身

这样的效果显然不合适,所以这里小编采用自己的程序处理方式,将前景图片转化为gif的格式,同时保持了gif图片的背景透明化,部分程序如下所示:

80行代码!用Python做一个哆来A梦分身

  • 程序的主入口是convert_image函数;

  • 函数首先获取一个图片中未出现的(R,G,B)元组colour;

  • 然后将图片中的背景填充为colour,在图片保存为gif的过程中;

  • 根据color_index函数来将图片中像素值为colour的部分透明化,便完成了从png图像到gif图像的转化。


03.实行分身


有了图片的转化之后,接下来就是要实现分身术的效果,我们需要将前景图片不断的出现在北京图片中的各个位置上,同时要保证前景图片位于北京图片的显示范围内。对于这部分程序的编写,其部分程序如下所示:

80行代码!用Python做一个哆来A梦分身

上述的程序中,self.create_gif函数目的是将jpg或者是png图像转化为gif格式的图像。而self. Doppelganger是程序的主序的主入口,首先我们设置了画面的大小和背景,然后通过for函数在背景图像上不断的放置我们的前景图片,使之展现出来分身的效果,同时规定了前景图片的显示范围。



最后,我们运行一下程序来展示一下效果:


以上我们便完成了整个程序的讲解,用Python做这个小练习,是不是满满的童年回忆。当然也可以换成你喜欢的动漫人物,比如海贼王路飞,秦时明月盖聂,斗破苍穹里面的美杜莎,萧炎,云韵。当然程序中还包含一个png图像转gif图像的程序,有需要的同学可以直接下载源码。


可以扫码输入:【蓝胖子】

获取源码


往期热门:
  • 十行代码,用Python做一个迷你版的美图秀秀
  • 实战:Flask + Vue 生成漂亮的词云
  • Python和Go都很火,我要怎么选?
  • 漫画,假装自己是Python高手,学会这十招就可以
  • 看了范伟和葛大爷的电影,我决定用Python做个石头剪刀布

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享