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

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

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

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

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

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

程序的主入口是convert_image函数;

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

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

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

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

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

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

目前wx搜索Python 【菜鸟学Python】排第二,汇聚了30万Python爱好者,累计原创近400篇趣味干货(爬虫,数据分析,算法,面试指南,原创趣味实战,Python游戏,机器学习),欢迎一起学Python,交流指正。

多啦a梦的python代码_80行代码!用Python做一个哆来A梦分身相关推荐

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

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

  2. 用python画路飞代码_80行代码!用Python做一个哆来A梦分身

    对于分身术,大家想必都或多或少的从<火影忍者>的动漫上看到过,炫酷的影分身场面,每每看到都觉得非常过瘾. 今天,小编其实是蓝胖子的铁粉,满满的童年回忆啊!今天Python来实现一个简单的哆 ...

  3. python皮卡丘编程代码_再接再厉,用python编程13行代码解方程组(纯字符)

    因为是示例为主,我们将方程组限制在二元一次方程组:x,y两个变量,两个方程.类似这样: 每个方程有两个变量,x和y,形式为:ax+by+c=d 由于这次有了两个方程,我们提取参数的代码就适合提炼为一个 ...

  4. Python百日百行代码挑战-day8,day9,day10,游戏实战系列-五子棋

    Python百日百行代码挑战-day8,day9,day10,游戏实战系列-五子棋 写在前面 需要用到的工具包和参考 游戏设定 初始化 切换下棋方 判断五子连珠(核心) 鼠标点击流程事件 成品展示 打 ...

  5. Python简单几行代码实现黑客电影镜头屏幕画面

    Python简单几行代码实现黑客电影镜头屏幕画面 通过几行简单的Python代码实现炫酷的数据流动效果 一.Python版本:Python3 二.操作示范 为了显得更加牛逼 逼真,通常不会直接运行源代 ...

  6. 【python】20行代码实现有道翻译api接口调用

    文章目录 1. 目标站点 2. 完整代码 3. 测试样例 3.1. 测试样例Ⅰ(汉译英) 3.2. 测试样例Ⅱ(英译汉) 4. 调用文档 4.1. 接口地址 4.2. 请求方法 4.3. 请求参数 4 ...

  7. 教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!!

    教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!! 代码展示: 开发环境: windows10 python3.6 开发工具: pycharm weddriver 库: sel ...

  8. 【python】15行代码实现猫脸检测(opencv)

    文章目录 1. 项目简介 2. 项目地址 3. 依赖模块 4. 完整代码 5. 必要组件 5.1. haar级联特征分类器(精度高) 5.2. lbp级联特征分类器(速度快) 6. 成果展示 6.1. ...

  9. 【python】60行代码实现给头像戴上圣诞帽(opencv)

    文章目录 1. 成果展示 2. 项目简介 3. 项目地址 4. 预备知识 5. 完整代码 6. 必要组件 7. 圣诞素材 8. 引用参考 9. 软件下载 1. 成果展示 2. 项目简介 原理很简单,就 ...

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

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

最新文章

  1. linux svn自动提交,svn 定时自动提交
  2. oracle怎么查别的库,ORACLE_SID、实例名和数据库名的区别及查看方法
  3. CentOS 配置epel源
  4. [译]学习IPython进行交互式计算和数据可视化(四)
  5. Python自定义函数的创建、调用和函数的参数详解
  6. MySql各引擎特点和性能测试
  7. pythonunicode转为字符串_python中将 \\uxxxx转换为 Unicode字符串
  8. 区块链系列教程之:比特币中的共识
  9. vue监听字符串长度_Vue 的 computed 和 watch 的区别
  10. 新一配:iPod及其系列产品【转载】
  11. PDF书签制作的方法!
  12. 基于微型计算机系统的实时时钟设计,基于单片机的DS12C887时钟芯片应用研究
  13. Python爬取m3u8格式视频并解密ts文件合并转为mp4格式
  14. 《创新者的基因》读书笔记
  15. 机器学习之经典算法(十一) 条件随机场
  16. 2分钟彻底搞懂“高内聚,低耦合”
  17. WPS画报的电脑壁纸怎么下载
  18. AD9361 官方例程详解(一)
  19. 网吧无盘主副服务器,网吧无盘服务器教程
  20. 闪送,为何能从顺丰中杀出一条血路?

热门文章

  1. 防止跨站攻击——CSRFToken
  2. 计算机网络经过了几个阶段,计算机网络的发展经过哪几个阶段?
  3. 用Python正则实现词频统计并验证Zipf-Law
  4. 区分LJMP、AJMP、SJMP、JMP指令
  5. 联想Ideapad310s笔记本换屏线
  6. FPGA时钟电路PCBlayout设计原则
  7. arm嵌入式led灯闪烁实验报告_ARM嵌入式系统与应用实验报告
  8. 基于arm嵌入式linux毕业设计,本科毕业论文--基于arm的嵌入式系统设计.doc
  9. 计算机的生产过程,笔记本电脑生产流程介绍 .pptx
  10. 【数据结构与算法分析】——java语言描述(1)