有一句至理名言说得好“Python除了不会生孩子,什么都能干”(当然这句话还有很多版本,比如MATLAB、Excel......),而今天小编就再次证明一下这个观点——用Python来设计一个微信logo。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

01

整体的画布设计

微信恐怕是我们最常用的手机软件了,其logo也经历了多次变化,这次我们就用最经典的微信绿色图标来作为例子,给大家展示一下如何用Python来进行设计。其图例如下:

图1. 微信经典绿色logo

这里小编的操作系统是Windows7,编程软件为Anaconda 2019.10版,所有库均为Anaconda自带,这次主要使用matplotlib绘图库来进行绘制。

首先还是导入各种需要的库。

接下来因为我们要在matplotlib的画布中进行设计,所以要进行相关的设置。

比如颜色,然后要去掉x,y轴的设置,把画布背景变为绿色等等。

这里的变量color就是微信logo的绿色主色调,我们把画布设置成一个正方形,x轴和y轴的坐标范围都设为0-40,这个数字可以随意设定,主要是为了在画图时找准图形的坐标,同时去掉x轴和y轴的坐标,然后再设置一下画布的颜色,就是微信的绿色,最后的变量patches用于存放一系列图形,后面会用到。

02

分析微信的logo

接下来我们就分析一下微信logo的组成。实际上我们可以把微信的主体logo看成三大部分:

第一部分是:两个椭圆,这两个椭圆一大一小(左边的更大一些),叠加在一起,就是图1中的主要白色的部分;

第二部分是:四个小圆圈,分别是这两个椭圆的那两对小眼睛,左边的小眼睛要稍微大一些,右边的稍微小一些;

最后是:每个椭圆的箭头,左边椭圆的箭头朝向左侧,右边椭圆的箭头朝向右侧。分析完我们就按照这三部分的顺序依次来绘制。

1).首先是两个椭圆的代码

es1 = Ellipse([15,24], width=21, height=18, facecolor='white', zorder=1)

es2 = Ellipse([26,16], width=18, height=15, facecolor='white', linewidth=5, edgecolor=color, zorder=1)

es1就是左侧的大椭圆,es2是小椭圆,这里es2要设置一下边框线的宽度和边框线的颜色,这样才能产生叠加效果,zorder是图层顺序,数字越大图层越靠上,这里es1和es2的zorder都设置为1,但因为es2后绘制,所以会产生es2叠加在es1之上的效果,如下图所示。

图2. 两个椭圆的效果图

2).绘制小眼睛

在这里我们为了能让每部分的效果展示出来,需要加上下面三行代码。这三行代码实际上是放在所有代码之后,所有代码是连在一起的。接下来绘制四个小眼睛,代码如下。

每对小眼睛都要关于各自所在椭圆的中线对称,左边的小眼睛要大一些,右边的小一些,把所有小眼睛的颜色都设置为绿色。效果如下图。

图3. 四个小圆圈的效果图

3).最后就是绘制两个箭头,代码如下

绘制这两个箭头可以说是最大的难点,但其绘制方法有多种,比如可以绘制一个三角形,用三角形的一个角来充当这个箭头,也可以用matplotlib的annotate方法来绘制一个箭头,然后进行填充,这两种方法都可用。

但要设置多个坐标同时还难以控制其形状,所以笔者就用了另外一种方法——用扇形的中心角来充当箭头。这种方法的好处是只需要设置一个顶点坐标,同时容易控制中心角的角度,最后的成图效果如下。

图4. 微信logo成图

一些人在这里可能没太看明白这两个箭头是怎么画的,那么我们把其他所有图形去掉,只画两个扇形,效果如下。从下图我们可以看到扇形的中心角充当了箭头,而上部的弧形部分和两个椭圆重叠在了一起,因为颜色相同,所以就被隐去了,看不出来了。

图5. 两个扇形的效果图

03

大功告成

最后我们再放上微信另外一个版本logo的图片,这和上面的设计方法完全一样,只是要把两个椭圆和各自的扇形的颜色改变一下,左边的椭圆和扇形的颜色代码为“#A1CC3F”,右边的颜色代码为“#E9E9E9”,同时把右边椭圆的边线去掉,把四个小眼睛设置为黑色,最后把画布背景设置为白色就OK了。

图6. 微信另一版本logo成图效果

从这个例子中我们可以看到matplotlib在应对简单的图形绘制时还是非常的得心应手,简单的数行代码就完成了一个微信图标的设计。都说Python不能生孩子,下次研究一下怎么让Python生个娃出来,哈哈 。

整个的代码量非常小,非常适合小白上手,看千遍说万遍,不如自己动手实践一遍。

30行Python代码来绘制一个微信图标相关推荐

  1. python微信图标制作_30行Python代码来绘制一个微信图标

    有一句至理名言说得好"Python除了不会生孩子,什么都能干"(当然这句话还有很多版本,比如MATLAB.Excel......),而今天小编就再次证明一下这个观点--用Pytho ...

  2. 30行Python代码,打造一个微信群聊助手~

    大家都知道,最近代码君迷上了Python,一直在研究这门语言,还是那句话,人生苦短,我学Python,今天代码君要教大家一个黑科技,30行代码实现自己定制的微信群聊助手,这个助手有什么用呐,就是用来活 ...

  3. python程序30行_30行Python代码,打造一个简单的微信群聊助手,简单方便

    大家都知道,最近代码君迷上了Python,一直在研究这门语言,还是那句话,人生苦短,我学Python,今天代码君要教大家一个黑科技,30行代码实现自己定制的微信群聊助手,这个助手有什么用呐,就是用来活 ...

  4. 30行python代码设计_30行Python代码实现3D数据可视化

    原标题:30行Python代码实现3D数据可视化 作者:潮汐 来源:Python技术 欢迎来到 编程教室~ 我们之前的文章中有讲解过不少 Matplotlib 的用法,比如: 之前我们基本都是用它来绘 ...

  5. 王者荣耀——bat批处理文件,自动刷金币版(脱胎于30行Python代码刷金币版),Windows双击即可运行!

    参考<30行Python代码刷王者荣耀金币>:https://segmentfault.com/a/1190000012520431 1.源代码 以下是源代码部分,全部复制到文本文档, 用 ...

  6. python换脸完整程序_小 200 行 Python 代码做了一个换脸程序

    原标题:小 200 行 Python 代码做了一个换脸程序 简介 在这篇文章中我将介绍如何写一个简短(200行)的 Python 脚本,来自动地将一幅图片的脸替换为另一幅图片的脸. 这个过程分四步: ...

  7. 如何用python破解热点_用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快

    原标题:用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快 当我们拖着疲惫的身体下班回到家,想开开心心的吹着空调风扇吃着西瓜,然后手机连上wifi打一把游戏好好舒服下,然而家里wif ...

  8. python写一个游戏多少代码-使用50行Python代码从零开始实现一个AI平衡小游戏

    集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何用 50 行 Python 代码创建一个 AI,使用增强学习技术,玩耍一个保持杆子平衡的小游戏.所用环境为标准的 OpenAI Gym, ...

  9. 50行python游戏代码_使用50行Python代码从零开始实现一个AI平衡小游戏

    使用50行Python代码从零开始实现一个AI平衡小游戏 发布时间:2020-10-23 09:26:14 来源:脚本之家 阅读:74 集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何 ...

最新文章

  1. bs4爬取的时候有两个标签相同_4.4 爬虫中的bs4数据爬取步骤
  2. 树莓派4B装载ROS系统启动摄像头
  3. 20145209 《信息安全系统设计基础》第7周学习总结
  4. 【转】C++ vector的reserve和resize详解
  5. 区块链学堂(1):区块链引子
  6. 为什么要使用openstry_为什么要使用双屏办公?
  7. c++11-explicit
  8. 局域网工业交换机的种类和选择注意事项!
  9. apache poi excel显示 base64 图片_数据处理之带图片Excel数据处理解惑
  10. mysql如何将多条返回结果的一个字段合并成一条
  11. Linux下飞鸽传书项目设计书,Linux 下飞鸽传书设计实现
  12. 拓端tecdat|R语言推特twitter网络转发可视化分析
  13. 未安装任何音频设备解决方案(2021/12/27)
  14. 《敏捷个人》周刊 第13期 (可下载)
  15. 什么是预付卡及预付卡发展前景
  16. 如何辨别手机屏幕材质
  17. 克鲁斯卡尔算法(Kruskal Algorithm)——图的最小生成树
  18. 页面置换算法之 LRU算法
  19. 18-Ansible常用模块-group模块
  20. cannot find implementation for com.xx.xx.xxDatabase. XXDatabase_Impl does not exist

热门文章

  1. jquery-ajax的同步与异步
  2. 亲测可用,超详细RabbitMQ消息队列集群配置
  3. 演示:外部全局地址与外部局部地址的使用案例
  4. flask笔记3-模板
  5. jquery导航,按钮等特效 - apycom
  6. Web容器和Servlet生命周期
  7. CentOS 7 odoo12 部署
  8. DreamFactory 第8章 保护您的DreamFactory环境
  9. Breeze:抢先体验Kubernetes 1.13.0高可用图形化部署
  10. Docker上部署GitLab服务器