表情包是当代社交生态中的战略性武器,既托起了友情的小船,又浮起了爱情的巨轮,还载起了亲情的航空母舰。在一个又一个宁静又不乏躁动的夜晚,此起彼伏的“老铁666”、“顶你上去”掀起了一阵又一阵的波澜。当你和别人斗图斗得天昏地暗、地动山摇的时候,你有没有想过,如果有一个三维的逗比表情包,你就可以对别人进行360度的全方位无死角嘲讽了!想到这里,你是不是由衷地在心里发出了豪爽而邪恶的笑声?

就像这样:

而现在,python就可以满足你这一不可告人的愿望!照例,我们用到的还是matplotlib的三维渲染。

首先,我们要有一张表情包的图片,最好是长度是宽度的两倍,这样的话,平面图片映射到球体上以后,变形会相对小一些。如果原始图片不符合要求,可以在画图工具里面重新调整大小,像下图这样:

那么,首先,表情包原图是这样的:

然后,我们重新生成一张长图,长度是上图的六倍,将上图的表情横着摆6个,代码和图片如下:

im=Image.open(r'origin.png')   width,height=im.size   result=Image.new(im.mode,(width*6,height))
for i in range(6):  result.paste(im,box=(i*width,0))   result.save('result.png')

接着,就是确定图片的显示范围,为了避免图片发生严重的变形,需要将图片映射到“低纬度”地区,我设定的是-pi/8到pi/8的范围。

用下面几行代码确定所有点的坐标:

#1128指的是长图的长度
u = np.linspace(0, 2*pi, 1128 * 1)
#94指的是长图的宽度
v = np.linspace(-pi / 8, pi / 8, 94 * 1)   x=a*np.outer(np.cos(u),np.cos(v))
y=a*np.outer(np.sin(u),np.cos(v))
z=b*np.outer(np.ones(np.size(u)),np.sin(v))

下文的最终绘制过程中,我们需要用到plot_surface函数,而该函数中有一个参数是facecolors,这个参数的意思就是为椭球的表面设置RGB值,我们就要在图片的各个像素点的RGB值和椭球表面的点之间建立一一对应的关系。代码如下:

bm=Image.open(r'result.png')
bm=np.array(bm)    colors=[]  for i in range(bm.shape[1]-1,-1,-1):    item=[]
for j in range(bm.shape[0]-1,-1,-1):    color="#{}{}{}".format(str.zfill(str(hex(bm[j][i][0]))[2:],2),str.zfill(str(hex(bm[j][i][1]))[2:],2),str.zfill(str(hex(bm[j][i][2]))[2:],2)) item.append(color)  colors.append(item)

最后,colors数组里面存储了所有椭球上面的点的RGB值。将colors赋值给facecolors就可以完成最后的绘制。

最终的结果大概是这样:

其他的表情也都可以试试。

说不定会有意外惊喜的哟

猜你喜欢

1、五年总结:过往记忆大数据原创精选

2、华为发布会:  牛逼鸿蒙,吹水的大会

3、MongoDB 4.2 发布,支持分布式事务

4、Kafka 基础面试知识都在这,你都知道嘛?

5、慌的一批!妹子一个rm -rf把公司服务器数据删没了..

如何用python绘制一系列三维的逗比风格表情包相关推荐

  1. python画图表情包_如何用python绘制一系列三维的逗比风格表情包

    表情包是当代社交生态中的战略性武器,既托起了友情的小船,又浮起了爱情的巨轮,还载起了亲情的航空母舰.在一个又一个宁静又不乏躁动的夜晚,此起彼伏的"老铁666"."顶你上去 ...

  2. python表情包多样化图形化聊天室_如何用python绘制一系列三维的逗比风格表情包...

    文章转载自公众号 Python爱好者社区 , 作者 盛光晓 表情包是当代社交生态中的战略性武器,既托起了友情的小船,又浮起了爱情的巨轮,还载起了亲情的航空母舰.在一个又一个宁静又不乏躁动的夜晚,此起彼 ...

  3. 如何用python绘制一系列三维的逗比风格表情包!

    表情包是当代社交生态中的战略性武器,既托起了友情的小船,又浮起了爱情的巨轮,还载起了亲情的航空母舰. 在一个又一个宁静又不乏躁动的夜晚,此起彼伏的"老铁666"."顶你上 ...

  4. python三维柱形图_如何用Python绘制3D柱形图

    本文主要讲解如何使用python绘制三维的柱形图,如下图 源代码如下: import numpy as np import matplotlib.pyplot as plt from mpl_tool ...

  5. 用python绘制柱状图标题-如何用Python绘制3D柱形图

    本文主要讲解如何使用python绘制三维的柱形图,如下图 源代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2 ...

  6. python画树叶-手把手|如何用Python绘制JS地图?

    原标题:手把手|如何用Python绘制JS地图? 关于转载授授权 大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+文章标题+转载",申请 ...

  7. python获取excel数据制作有文字和图表的报告_如何用Python绘制学术报告图表?

    原标题:如何用Python绘制学术报告图表? 作者:ExcelTing 原文:http://cnblogs.com/excelting/p/6507680.html 全文约 3581 字,读完可能需要 ...

  8. python均线选股_python选股模型均线,已知股票数据,如何用Python绘制k线日对应数据...

    Q1:已知股票数据,如何用Python绘制k线日对应数据 我没遇到过 只是自己写过 有点经验 先确定时间片 然后再把tick插入就行了 Q2:使用python实现ema(指数移动平均的计算) a =  ...

  9. 如何用Python绘制曲线——turtle画小鱼化石的实践篇

    turtle绘制曲线的方法很多,除了大家常用的"一步一拐法",用抛物线公式来绘制曲线也十分方便.(对"一步一拐法"感兴趣的童鞋可参考博文 <如何用Pyth ...

最新文章

  1. MySQL主从数据库配置
  2. ant混淆编译java web,Android中使用ant混淆编译
  3. (十五)非常全面的TCPIP面试宝典-进入大厂必备总结
  4. 解决循环引用--弱引用weak_ptr
  5. 【转载】Kerberos原理--经典对话
  6. 了解SQL Server事务日志备份和完整备份的日志序列号
  7. Linux GPIO键盘驱动开发记录_OMAPL138
  8. 设计模式实现一个简单的缓存
  9. 七个国外免费杀毒软件
  10. 软件测试工程师职业规划怎么写,软件测试工程师的职业生涯规划
  11. CircularProgressIndicator
  12. 51单片机-PWM调速(直流电机,智能小车的电机调速)
  13. OpenGL绘制框架(Win32版)
  14. 2022.8.29-9.4 AI行业周刊(第113期):世界人工智能大会
  15. SSD学习系列(二)LMDB概念以及将VOC数据集转换成LMDB格式
  16. poj1950 Dessert(DFS)
  17. 2022年危险化学品经营单位主要负责人及危险化学品经营单位主要负责人模拟考试
  18. 数学史资料:中世纪数学
  19. spring 事务传播
  20. 在Windows应用程序中设计菜单栏、工具栏和状态栏

热门文章

  1. A星自动寻路算法学习
  2. 【新书推荐】【胡和平著】驾考秘籍电子版
  3. 使用Pdroid patcher打补丁的时候的日志
  4. onchange onpropertychange 和 oninput 事件的区别
  5. 【PM】产品需求管理
  6. 使用 Xcode 5 生成和使用静态库
  7. ExoPlayer源码浅析(转载)
  8. 马尔可夫随机场 MRF 个人理解
  9. C#加密解密文件小工具实现代码
  10. 性感帝国 私有云 php,基于Ubuntu+kodexplorer可道云的私有云网盘