Python自动生产表情包


Posted in Python onMarch 17, 2017

作为一个数据分析师,应该信奉一句话——“一图胜千言”。不过这里要说的并不是数据可视化,而是一款全民向的产品形态——表情包!!!!

表情包不仅仅是一种符号,更是一种文化——是促进社交乃至社会发展的动力之一,就像懒。我们坚持认为,一张优秀的表情包,应该是一幅艺术品,是那忽如一夜春风来的灵感爆发,是那嘈嘈切切错杂弹的情思激荡,是那直挂云帆济沧海的壮志豪情,是那一览天下众山小的荣耀胜利——是不可以容忍码农用其惯有的形式固定、流程固定、毫无美感、毫无艺术的变幻和惊喜的直线思维解构。然而,在生产表情包的过程中,如果只是机械地把图片导进PS——改文字——导出,那也太low了,所以还是把这些很low的机械化的重复动作交给程序来做吧。

之前一直以为图像的自动处理,要靠JavaScript脚本控制PS或者AI;后来发现Python其实也可以做一些简单的图像处理,虽然可能比不上MATLAB强大。于是对于图像处理,复杂的部分依然在PS或者AI中人工完成,简单的处理就可以用Python程序完成。

在开工之前,先让我们瞻仰膜拜一下表情包界里程碑式的人物,感谢他们大力推动了表情包在历史潮流中的显著进步,他们的英名将长期被人民大众津津乐道,他们的音容笑貌将在人们的日常社交中经久不衰,他们的卓越贡献将永远镌刻于表情包史的丰碑上!

Python自动生产表情包

(如果表情可以收版权费的话,那就不用辛辛苦苦地去打球、拍戏、播音了……)

素材准备

这里我们以网络上流传最广的金馆长表情为中心,以萌萌哒的熊猫头作为背景,底下加上文字就能构成一张表情包。

Python自动生产表情包

Python自动生产表情包

然后用PS处理一下图片大小,模板大小设为250*250,表情裁剪一下白边。

图片叠加

第一步工作是把表情叠加到模板上,注意到我们的表情素材是白底而不是透明,所以位置要控制好,不然会遮盖住轮廓。

from PIL import Image, ImageDraw, ImageFont
img = Image.open(".\background.jpg")
jgz = Image.open(".\jgz.jpg")
img.paste(jgz,(73,42))
img.show()

这样就会看到合成的图片了:

Python自动生产表情包

这张图片下方还有一截留白,那是给我们最后一步添加文字用的。come on,魔性的笑容已经呈现,接下来就是最后一击,are you OK?! 哦不,are you ready?!

文字叠加

尽管表情包的核心是表情,然而一行简短而又震撼的文字往往能起到直击灵魂的画龙点睛的作用。

draw = ImageDraw.Draw(img) 
ttfront = ImageFont.truetype('simhei.ttf', 24) 
draw.text((32, 190),"我的内心毫无波动\n 甚至还想笑",fill=(0,0,0), font=ttfront) 
img.show()
img.save(".\Python生成的表情包.jpg")

这样就生成了一张完整的表情包了:

Python自动生产表情包

其中draw.text()是往图层里输入文字,所以可以不断执行这条命令以在图片里添加多层文字。

你还可以导入多张表情,以及多个文本台词,这样就可以大规模批量自动生产表情包了……

问题升华

你以为到这里就结束了吗?too young啊!请童鞋们思考这个问题:

  • 表情包下留白的空间是有限的
  • 中文和英文以及标点符号占据的空间不同
  • 如果文本太长,就需要换行;可是如果行太多,图片就放不下

因此,当你脑中突然闪现出一句既包含中文也有英文还有N多标点符号以增强语气的台词时,怎么设计一个算法,用来寻找合适的字号大小,文本插入位置,文本在哪些地方换行,使文本能在有限空间居中展示,而且还要满足一定的观感呢?

Python自动生产表情包

算了,还是在这里结束吧……

于是,通过这篇严肃正经的教程,我们学会了使用Python进行简单图像处理的方法,更get到一项实用的神技:自动生产表情包。

最重要的是,老夫经常说的“信不信我分分钟批量做你大堆的表情包”,终于成为现实了……

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Python 相关文章推荐
python为tornado添加recaptcha验证码功能
Feb 26 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
Nov 14 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
Python登录注册验证功能实现
Jun 18 Python
python调用外部程序的实操步骤
Mar 04 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 Python
基于python修改srt字幕的时间轴
Feb 03 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
Python如何读写CSV文件
Aug 13 Python
python Timer 类使用介绍
Dec 28 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 Python
Python实现的异步代理爬虫及代理池
Mar 17 #Python
Python 专题一 函数的基础知识
Mar 16 #Python
python 专题九 Mysql数据库编程基础知识
Mar 16 #Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 #Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 #Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
Mar 16 #Python
python开发利器之ulipad的使用实践
Mar 16 #Python
You might like
在WIN98下以apache模块方式安装php
2006/10/09 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
浅谈PHP封装CURL
2019/03/06 PHP
JavaScript中Math对象使用说明
2008/01/16 Javascript
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
JavaScript toFixed() 方法
2010/04/15 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
JS实现环形进度条(从0到100%)效果
2016/07/05 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
详解python while 函数及while和for的区别
2018/09/07 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
2020/02/03 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
《故乡》教学反思
2014/04/10 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
个人收入证明模板
2014/09/18 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
义诊活动总结
2015/02/04 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android