作者 | 依然很拉风

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

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

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

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

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

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

素材准备

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

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

图片叠加

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

from PIL import Image, ImageDraw, ImageFontimg = 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到一项实用的神技:自动生产表情包。

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

End

python表情包多样化聊天室_Python | 信不信我分分钟批量做你大堆的表情包?相关推荐

  1. python多台电脑聊天室_python的多人多功能聊天室

    从Beginning Python: From Novice to Professional, Second Edition 中的一个chatroom项目中拿出来的.那里的聊天室,只有一个单间聊天室功 ...

  2. python项目之网络聊天室_Python实现多人聊天室

    项目简介 编程语言:Python3 界面实现:Pyside2(通过QT Designer设计) 基于TCP网络编程 项目概略图: 实现功能 (1)   客户端通过服务器访问数据库,进行登录注册 (2) ...

  3. python聊天室_python实现简单多人聊天室

    本文实例为大家分享了python实现多人聊天室的具体代码,供大家参考,具体内容如下 刚开始学习python,写了一个聊天室练练手. Server.py import socket,select,thr ...

  4. python多人聊天室_python实现简单多人聊天室

    本文实例为大家分享了python实现多人聊天室的具体代码,供大家参考,具体内容如下 刚开始学习python,写了一个聊天室练练手. Server.py import socket,select,thr ...

  5. 基于Python的多人聊天室的设计与实现

    基于Python的多人聊天室的设计与实现 摘要  本文介绍了基于即时通讯的Python实现web版多人聊天室的设计和实现.这个系统利用了多种先进的技术,如Django.Channels.WebSock ...

  6. 基于python面向对象多人聊天室

    基于python面向对象多人聊天室 1.项目环境 项目名称:多人聊天室 项目模式:C/S 开发环境:win10+python3.8+pycharm 所需知识:python GUI编程,多线程编程,网络 ...

  7. python实现udp聊天室_python网络编程基础--socket的简介,以及使用socket来搭建一个简单的udp小程序...

    socket介绍: socket(简称套接字),是进程间通讯的一个工具,他能实现把数据从一方传输到另一方,完成不同电脑上进程之间的通讯,它好比数据的搬运工. socket应用: 不夸张来说,只要跟网络 ...

  8. 基于python的聊天室_Python实现文字聊天室

    你是否想过用所学的Python开发一个图形界面的聊天室程序啊? 像这样的: image 如果你想开发这样一个有点怀旧风格的聊天程序,那么可以接着看: 要开发这个聊天程序,你需要具备以下知识点: asy ...

  9. python多人聊天室_Python基于Socket实现简易多人聊天室

    前言 套接字(Sockets)是双向通信信道的端点. 套接字可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器. 套接字可以通过多种不同的 ...

最新文章

  1. idea没有错误出现红色波浪线怎么去掉?
  2. IOS 修改UIAlertController的按钮标题的字体颜色,字号,内容
  3. java确认rabbitmq_RabbitMQ的消息确认模式
  4. JS的forEach和map方法的区别
  5. 矩池云利用ipykernel为JupyterLab添加kernel以及展示出来
  6. 串行舵机/数字舵机的替代方案,低成本的舵机级联方案。数字舵机的驱动芯片。普通舵机改数字舵机
  7. AI界的革命!终于可以自动标注了!
  8. 《剑指offer》面试题16——反转链表(C++)
  9. centos7安装tomcat9过程
  10. emule服务器有响应,eMule刚连上服务器就断请教为什么
  11. 斩获新一轮数亿元融资,Seesaw这杯创意咖啡里有多少“泡沫”?
  12. Nature子刊 | 褚海燕组-土壤生物多样性与城市绿地生态系统功能(朱永官/韦革宏点评)...
  13. 网吧机子dns服务器没有响应,网吧找不到的服务器dns地址
  14. 32位oracle10,Oracle10g32位升级到64位方法
  15. 格拉姆--施密特(Gram-Schmidt)正交化方法笔记
  16. Git之删除本地仓库
  17. logrotate详情和坑点
  18. 服务器存储hba卡直连,hba卡直连存储_fc hba卡之间如何连接_hba卡怎么连存储(5)
  19. 【刷题日记】网易——瞌睡
  20. Blender PS Zbrush 人物眼球制作1 - 贴图制作、雕刻、渲染

热门文章

  1. killall杀死nginx顽固进程
  2. 如何设计一个项目的数据库
  3. 大数据是什么,大数据的特点主要有哪些,应该怎么运用?
  4. 申请GitHub学生包,0成本搭建WordPress教程
  5. SVN打标签方法及在此过程中的问题处理
  6. 全新动态视频壁纸微信小程序源码下载支持多种分类短视频另外也有静态壁纸
  7. java实现qq邮箱发送附件和图片
  8. 京东“加关注”代码“ID必须以zx开头”的解决方法
  9. VMware Workstation Pro新建虚拟机的操作步骤
  10. kubernetes(k8s)第五部分之K8s部署nginx