点击上方“ Python爬虫与数据挖掘 ”,进行关注
回复“书籍”即可获赠Python从入门到进阶共10本电子书
今
日
鸡
汤
疾风知劲草,板荡识诚臣。
有一句至理名言说得好“Python除了不会生孩子,什么都能干”(当然这句话还有很多版本,比如MATLAB、Excel......),而今天小编就再次证明一下这个观点——用Python来设计一个微信logo。
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生个娃出来,哈哈 。
整个的代码量非常小,非常适合小白上手,看千遍说万遍,不如自己动手实践一遍。
**********---**--****-------------- End **********---**--****--------------
往期精彩文章推荐:
欢迎大家点赞,留言,转发,转载,****感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~
本文分享自微信公众号 - Python爬虫与数据挖掘(crawler_python)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。