一个很皮的实践 Python自动生成表情包

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

表情包不仅仅是一种符号,更是一种文化;是促进社交乃至社会发展的动力之一,就像懒。

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

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

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

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

素材准备

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

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

图片叠加

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

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

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

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

文字叠加

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

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

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

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

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

问题升华

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

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

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

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

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

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

原文发布于微信公众号 - IT派(transfer_3255716726)

原文发表时间:2018-04-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏VRPinea

为使VR更逼真,Disney Research推程序语言动画新方法

3064
来自专栏量子位

当,程序员突然想画画,AI+机器人就该登场了

但,理想和现实之间,可能远隔千山。比方,你其实没有创作的灵感。以及,你其实没有把灵感实现出来的基本技能。

1023
来自专栏新智元

华中科大骆清铭:开启“脑空间信息计划”,连接脑科学与类脑人工智能

【新智元导读】华中科技大学(苏州)脑空间信息技术研究院启动在即,旨在使工业级高分辨率脑图成为神经科学的标准工具。这一项目由华中科技大学生物医学成像研究者骆清铭领...

4247
来自专栏逍遥剑客的游戏开发

GDC2017: 《Lone Echo》中的VR动画

3284
来自专栏大数据挖掘DT机器学习

解析滴滴算法大赛---拟合算法

续上篇 解析滴滴算法大赛---数据分析过程 滴滴算法大赛到底需要什么样子的答案? 我一开始的想法是建立一个模型,通过天气,POI,交通拥堵的参数来推导出订单数...

4345
来自专栏智能算法

把照片滤镜成“电影风”,其实没你想象的简单

P过许多张图片、磨过不少皮,却依然不了解其中的奥秘。趁着刚被一波滤镜刷屏的节奏,今天,我们扒一扒“滤镜”。 化腐朽为神奇的滤镜 ? 《你的名字》剧照 美仑美焕的...

4505
来自专栏华章科技

25条神技!关于数据可视化,看这篇文章就够了

导读:可视化不是单纯的数据展示,其真正价值是设计出可以被读者轻松理解的数据展示。设计过程中的每一个选择,最终都应落脚于读者的体验,而非设计者个人。

883
来自专栏DT数据侠

有了游戏级渲染技术加持,数据可视化竟能如此炫酷 !

如果你喜欢玩游戏,一定被某些游戏中的画面渲染效果惊艳过,如果把这些游戏级的渲染技术应用到数据的可视化中,又会发生什么呢?在7月15日第15期数据侠实验室活动中,...

960
来自专栏ATYUN订阅号

AI提早6年预测老年痴呆症,灵敏度达到100%

老年痴呆症影响超过500万美国人,预计到2050年这一数字将增加到1600万。早期干预可以帮助减轻最令人虚弱的症状,即记忆丧失以及阅读和组织思想的问题,但不幸的...

991
来自专栏吉浦迅科技

人工智能技术怎样帮我戒掉布朗尼蛋糕

我那风中烛火般摇晃的意志力在跟双份巧克力布朗尼蛋糕对抗着,果不其然,布朗尼蛋糕大胜。 Lose It 饮食 app 的深度学习卡路里计算器,是我拿来对抗美食诱惑...

45114

扫码关注云+社区

领取腾讯云代金券