使用Python制作表情包实现换脸功能


Posted in Python onJuly 19, 2019

使用Python制作表情包实现换脸功能

“表情包”是现在非常流行的交流方式,通过一张图片就能把文字不能表达或不便于表达的情感给表示出来,表情包一经诞生,就统治了中国人的社交圈,尤其是年轻人,他们的社交方式是所谓“天可不聊,图不可不斗”,几乎任何对话都会出现表情包的身影,一言不合就斗图,自己也会在聊天中发几个表情包,可是总会造成一些小误会,比如下面的图

使用Python制作表情包实现换脸功能

有好多朋友看到这个表情包之后误以为这也是我用Python做的,其实不然,这个图就是网上普通的表情包,但是今天我要用Python做几个表情包。

今天制作表情包用到的技术还是之前提到的Turtle库,可以从之前的文章除了画佩奇我们还要玩点更高级的,去学习Turtle的常用语法,然后就是PIL库,之前通过这篇文章:Python骚操作|用Python来P图也介绍过PIL的几个用法,今天的案例算是做一个小小的复习。

这是一个捂脸的表情,可以表达内心千万只 * 奔腾而过,使用Turtle来实现,可以将这个图分成以下几个部分:脸,嘴巴,牙齿,两边的眼泪,手指和手腕,完整的代码和语法不过多解释,贴一个画脸的代码。

# 画脸
turtle.speed(5)
turtle.setup(900, 600, 200, 200)
turtle.pensize(5)
turtle.right(90)
turtle.penup()
turtle.fd(100)
turtle.left(90)
turtle.pendown()
turtle.begin_fill()
turtle.pencolor("#B26A0F") # head side color
turtle.circle(150)
turtle.fillcolor("#F9E549") # face color
turtle.end_fill()

使用Python制作表情包实现换脸功能

第二个图是斜眼笑,表达的意思你懂得。

来看第三幅图,这个图是使用PIL库来生成的,其实这两个图是两张图拼起来的。首先呢,我们需要找两张图片,一张做表情包的背景,一张做表情。我们就以萌萌哒的熊猫头作为背景,然后试着在背景图上加入金馆长嘻哈表情。

现在我们要把金馆长的表情叠加在熊猫头的背景图中,需要注意的是要在代码中控制好金馆长的表情叠加位置,不然会遮盖住其他轮廓。

from PIL import Image,ImageDraw,ImageFont
img = Image.open("640.jpg")
jgz = Image.open("641.jpg")
img.paste(jgz,(63,46))

图片的下方是留有一部分空白的,我们可以添加一些文字。

from PIL import Image,ImageDraw,ImageFont
 img = Image.open("640.jpg")
 jgz = Image.open("641.jpg")
 img.paste(jgz,(63,46))
#控制表情的叠加位置
 draw = ImageDraw.Draw(img)
 font = ImageFont.truetype("simyou.TTF",24)
 draw.text((16,200),"Ahab杂货铺!", fill = (0,0,0), font = font)
 #控制文字添加位置
 img.show()
 img.save("生成的表情包.jpg")

使用Python制作表情包实现换脸功能

总结

以上所述是小编给大家介绍的使用Python制作表情包实现换脸功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 Python
Python中动态获取对象的属性和方法的教程
Apr 09 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 Python
深入浅析python 中的匿名函数
May 21 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
django2笔记之路由path语法的实现
Jul 17 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
MxNet预训练模型到Pytorch模型的转换方式
May 25 Python
python怎么判断模块安装完成
Jun 19 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
golang特有程序结构入门教程
Jun 02 Python
解决Django一个表单对应多个按钮的问题
Jul 18 #Python
Django工程的分层结构详解
Jul 18 #Python
django mysql数据库及图片上传接口详解
Jul 18 #Python
解决django中ModelForm多表单组合的问题
Jul 18 #Python
浅谈Django中view对数据库的调用方法
Jul 18 #Python
django-rest-framework解析请求参数过程详解
Jul 18 #Python
python Django中models进行模糊查询的示例
Jul 18 #Python
You might like
php curl的深入解析
2013/06/02 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
Javascript实现的分页函数
2006/12/22 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Python实现随机选择元素功能
2017/09/14 Python
名片管理系统python版
2018/01/11 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
python 绘制国旗的示例
2020/09/27 Python
简述DNS进行域名解析的过程
2013/12/02 面试题
资料员的岗位职责
2013/11/20 职场文书
党员干部承诺书范文
2014/03/25 职场文书
高考标语大全
2014/06/05 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
导游欢送词
2015/01/31 职场文书
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
讲解MySQL增删改操作
2022/05/06 MySQL