Python | 自动生成表情包,从此斗图无敌手!

来源:CSDN

ID:CSDnews

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

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

我们坚持认为,一张优秀的表情包,应该是一幅艺术品,是那忽如一夜春风来的灵感爆发,是那嘈嘈切切错杂弹的情思激荡,是那直挂云帆济沧海的壮志豪情,是那一览天下众山小的荣耀胜利,是不可以容忍码农用其惯有的形式固定、流程固定、毫无美感、毫无艺术的变幻和惊喜的直线思维解构。

然而,在生产表情包的过程中,如果只是机械地把图片导进PS --> 改文字--> 导出,那也太low了,所以还是把这些很low的机械化的重复动作交给程序来做吧。

之前一直以为图像的自动处理,要靠JavaScript脚本控制PS或者AI;后来发现Python其实也可以做一些简单的图像处理,虽然可能比不上 MATLAB 强大。

于是对于图像处理,复杂的部分依然在PS或者AI中人工完成,简单的处理就可以用Python程序完成。

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

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

素材准备

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

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

图片叠加

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

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")

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

这张图片下方还有一截留白,那是给我们最后一步添加文字用的。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啊!请童鞋们思考这个问题:1. 表情包下留白的空间是有限的

2. 中文和英文以及标点符号占据的空间不同

3. 如果文本太长,就需要换行;可是如果行太多,图片就放不下

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

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

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

最重要的是,老夫经常说的"信不信我分分钟批量做你大堆的表情包",终于成为现实了……对此,我想说,完了我爱上了Python!因为Python也太好玩了,方向太多了!

本文分享自微信公众号 - Python专栏(xpchuiit)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-31

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Python自动生成表情包,Python在手,从此斗图无敌手!

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

24240
来自专栏BestSDK

【设计教程】色彩与用户体验的秘密:如何同配色唤起用户的兴趣?

颜色研究和规划是设计过程的重要部分,在开始设计之前,必须选择适当的颜色,以有效地执行品牌,价值传递和整体色调。 那么我们如何在网页设计中使用颜色创造正确的情感呢...

29030
来自专栏机器之心

刚刚,AI顶会NIPS改名了!新的名字竟然是……

此举引发了人们的热议,此前,这一大会因为名称缩写「具有性别歧视的意味」而遭受争议。值得一提的是,NeurIPS 这个名字之前并没有出现在更名投票的选项中。

13230
来自专栏机器人网

Nvidia工程师用“深度学习+智能系统”赶走拉屎喵星人

铲屎并不是一件轻松的差事,尤其是邻居家的喵星人隔三差五地到你家草坪上“撒野”的情况下。脑洞大开之下,Nvidia工程师Robert Bond决定用一套全自动的装...

28530
来自专栏数据的力量

用工程师的思维加上 3D 建模,熬出一碗浓浓的鸡汤

18330
来自专栏张叔叔讲互联网

浙江省初中信息技术七年级(下)-张叔叔划重点

上一篇文章得到了大家的认可,张叔叔坚持写下去的动力更加充足了!今天讲一下浙江省初中信息技术七年级下,再次声明哈,是浙江教育出版社出版的,读书差可以,如果连自己读...

15810
来自专栏知晓程序

厉害了!这个小程序,能让你说一口飘准的「普通发」

今天,知晓程序(微信号 zxcx0101)给大家推荐一款「普通话学习评分」小程序,它使用专业的普通话评分系统,你可以录音让它为自己的普通话打分。

12940
来自专栏顶级程序员

如何用Python自动生成表情包?点击进入

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

13230
来自专栏北京马哥教育

Python自动生成表情包

来源:Python开发 ID:PythonPush 作为一个数据分析师,应该信奉一句话----"一图胜千言"。不过这里要说的并不是数据可视化,而是一款全民向的...

64170
来自专栏思影科技

SCIENCE:脑和脊髓的交互调节价值在反向安慰剂痛觉过敏中的作用

近日,来自德国汉堡-埃彭夫医学中心的A.Tinnermann在Science上发文,发现昂贵的治疗会导致更多的副作用。将无效的治疗标记为昂贵的药物相比于将它标记...

36480

扫码关注云+社区

领取腾讯云代金券