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

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

01.技术设计

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

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

02.难点处理

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

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

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

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

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

03.实行分身

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

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

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

更多原创的精彩干货可以去公众号【菜鸟学Python】找我们。目前原创近400个趣味原创案例(Python入门,进阶,经验技巧,爬虫,数据分析,机器学习,面试经验等),欢迎来公众号找我们交流!

用python画路飞代码_80行代码!用Python做一个哆来A梦分身相关推荐

  1. python画哆啦a梦图片_80行代码!用Python做一个哆来A梦分身

    原标题:80行代码!用Python做一个哆来A梦分身 对于分身术,大家想必都或多或少的从<火影忍者>的动漫上看到过,炫酷的影分身场面,每每看到都觉得非常过瘾. 今天, 小编其实是蓝胖子的铁 ...

  2. python画爱心原理_Python18行代码做出来这样有点浪漫,又有点极客的“内涵”图...

    今天就来教大家这个套路: 如何使用 Python 来做出来这样有点浪漫,又有点极客的"内涵"图. 当然,能不能靠它得到心仪对象的青睐,就要靠你(命)了.(๑•́₃ •̀๑) 那么要 ...

  3. python编程小游戏代码-Python小游戏之300行代码实现俄罗斯方块

    前言 本文代码基于 python3.6 和 pygame1.9.4. 俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块.但是想到旋转,停靠,消除等操作,感觉好像很 ...

  4. python小游戏源码-Python小游戏之300行代码实现俄罗斯方块

    Python小游戏之300行代码实现俄罗斯方块 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: Python小游戏之300行代码实现俄罗斯方块.txt ] (友情提示:右键点上 ...

  5. python写百行代码可运行_56 岁潘石屹学俩月 Python ,写下百行代码

    原标题:56 岁潘石屹学俩月 Python ,写下百行代码 By 超神经 内容导读:跨界王潘石屹在近期迷上了编程,不仅高调宣布学习 Python,拜老师,还隔三差五晒出自己的「编程课作业」,和网友进行 ...

  6. 【并发编程七】C++进程通信——套接字(socket)_80行代码实现一个聊天软件

    [并发编程七]进程通信--套接字(socket)_80行代码实现一个聊天软件 一.简介 二.相关知识介绍 1.winsock1.h.winsock2.h 2.如何使用ws2_32.dll 3.WSAS ...

  7. python画花女朋友_教你使用python画一朵花送女朋友

    本文实例为大家分享了用python画一朵花的具体代码,供大家参考,具体内容如下 第一种,画法 from turtle import * import time setup(600,800,0,0) s ...

  8. 如何用python画一朵花_教你使用python画一朵花送女朋友

    本文实例为大家分享了用python画一朵花的具体代码,供大家参考,具体内容如下 第一种,画法 from turtle import * import time setup(600,800,0,0) s ...

  9. 怎么样用python画一朵花_教你使用python画一朵花送女朋友

    本文实例为大家分享了用python画一朵花的具体代码,供大家参考,具体内容如下 第一种,画法 from turtle import * import time setup(600,800,0,0) s ...

最新文章

  1. 服务器信息采集协议,服务器信息采集
  2. 基于FPGA的FFT变换实现
  3. boost::describe模块实现==重载的测试程序
  4. c++判断数字是否为3的倍数的算法实现(附完整源码)
  5. 数据科学 IPython 笔记本 7.10 组合数据集:合并和连接
  6. vue 插件 滑块验证_vue滑块验证,原理,demo
  7. ZLYD团队第一周项目总结
  8. 力扣-203 移除链表元素
  9. 计算机硬件无法启动不能读取文件,修复Windows出现的“文件或目录已损坏且无法读取”问题...
  10. 视频垂直翻转并添加马赛克的步骤
  11. Android开发之十二:Camera成像原理介绍
  12. sgu-244 Height, Bisector and Median
  13. python爬虫-京东登录
  14. 获取win10计算机所有权限,如何获得管理员权限 教您win10获取管理员所有权限的方法。...
  15. Linux服务器互信
  16. 某男孩PYTHON29期解压版
  17. 什么是RSS?RSS及其发展历程
  18. 如何在路由器上做端口映射
  19. 影像质量评估之锐利度--MTF(SFR)
  20. 日常服务器巡检时,free -m命令的说明

热门文章

  1. python 判断天干地支年份
  2. eyoucms 列表分页修改
  3. CCIE EI Guestshell
  4. 【OpenCV】 级联分类器训练模型
  5. 卷积神经网络手写体识别
  6. 2019秋招海康测试一面
  7. TEC控温模块电路分析
  8. Ubuntu 12.04配置静态ip和动态ip
  9. 计算机视觉 ----全面介绍
  10. 【刷题篇】避免洪水泛滥