首页 > 编程语言 >天秀!花费 200W 设计的新版 “小米”图标,看看用Python怎么绘制?

天秀!花费 200W 设计的新版 “小米”图标,看看用Python怎么绘制?

时间:2022-10-11 14:39:25浏览次数:77  
标签:plt Python image 像素 200W logo 天秀 小米 255


最终呈现效果

哈哈,咋们在讲述之前,首先看看最终呈现的效果吧,整体来说还是很不错的。

天秀!花费 200W 设计的新版 “小米”图标,看看用Python怎么绘制?_坐标轴

小米 “新” 图标背后的数学

前段时间,小米公司发布了一条微博,引发了热议,原来小米换了新logo了。

天秀!花费 200W 设计的新版 “小米”图标,看看用Python怎么绘制?_python_02


很多人,都觉得雷总被骗了。说实话,我当时猛的一看,也是很蒙蔽,可能咋们不懂美学,不懂新logo背后蕴藏的文化底蕴吧!

天秀!花费 200W 设计的新版 “小米”图标,看看用Python怎么绘制?_matplotlib_03


但是,原设计者原研哉说到:最新设计的小米logo,融入了东方哲学的思考,从而提出了一个具有「超椭圆」数学之美的小米新 LOGO,同时还增加了黑色和科技银来作为小米品牌色彩的新搭档。

天秀!花费 200W 设计的新版 “小米”图标,看看用Python怎么绘制?_坐标轴_04


原研哉还说到:在验证的过程中,用到了一个数学公式。

天秀!花费 200W 设计的新版 “小米”图标,看看用Python怎么绘制?_坐标轴_05


从上面的公式可以看到,这里有一个n,因此可以知道:上述公式能够绘制出n种类型的超椭圆。而设计者最终推荐使用n=3这一形状。

天秀!花费 200W 设计的新版 “小米”图标,看看用Python怎么绘制?_数学公式_06


n=3时的超椭圆公式如下所示,其中x的取值范围为[-1, 1]。

天秀!花费 200W 设计的新版 “小米”图标,看看用Python怎么绘制?_matplotlib_07


转换以后,可以得到如下公式:

天秀!花费 200W 设计的新版 “小米”图标,看看用Python怎么绘制?_matplotlib_08

Python绘制新logo流程

① 绘图原理

在正式绘图之前,我们先来讲述一下Python绘制新logo的“绘图原理”。掌握了原理后,剩下的问题就交给代码吧。

  • ① 利用 “超椭圆” 公式,绘制一个带填充色的椭圆;
  • ② 遍历 “旧logo” 上的像素值,保留白色 “米字” 处的像素值;
  • ③ 将带“米字” 的像素值,写入第一步的超椭圆中;

​matplotlib绘图原理 “戳我” 看看吧!​

② 重要知识点的普及

关于整个代码,有几个函数需要给大家提一下,为了大家更够很快学习。但是不会讲解的很详细,大家可以根据说明,自行下去查阅相关资料。

  • ① plt.fill():用于给图形填充颜色;
  • ② plt.axis():用于打开/取消坐标轴展示;
  • ③ plt.subplots_adjust()和plt.margins():用于去掉图形外侧多余的留白;
  • ④ image.getpixel():用于读取图片的像素值;
  • ⑤ image.putpixel():用于在指定坐标位置处,写入像素值;
③ 完整绘图代码

首先我们先导入相关库:

import matplotlib.pyplot as plt
import numpy as np
from PIL import

接着,利用上面 提到的公式,绘制一个不留白、带填充色的n=3的超椭圆。

x = np.linspace(-1, 1, 1000)
y = + pow(1-abs(pow(x, 3)), 1/3) # 注意公式的写法
z = - pow(1-abs(pow(x, 3)), 1/3) # 注意公式的写法
plt.figure(figsize=(12, 12)) # 画布大小

plt.plot(x, y, color=(255/255, 103/255, 0))
plt.plot(x, z, color=(255/255, 103/255, 0))
plt.fill(x, y, color=(255/255, 103/255, 0)) # 填充颜色
plt.fill(x, z, color=(255/255, 103/255, 0)) # 填充颜色
plt.axis('off') # 不显示坐标轴
plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0)
plt.margins(0, 0)
plt.savefig('fill.png', transparent=True, dpi=100) # 设置保存图片的透明值

然后,遍历旧logo的像素值,保留 “米字” 那一块儿。将该像素值,写入上面的 “fill.png” 中。有一点需要注意的是:白色的rgb值是255, 255, 255。

image_1 = Image.open('old.png')
image_2 = Image.open('fill.png')

w, h = image_1.size

for i in range(w):
for j in range(h):
data = image_1.getpixel((i, j))
if data == (255,)*4:
image_2.putpixel((i, j), (255,)*4)

image_2.save('new.png')

参考文章:Python画出小米新logo的轮廓曲线

标签:plt,Python,image,像素,200W,logo,天秀,小米,255
From: https://blog.51cto.com/u_14346314/5746277

相关文章

  • 对比Python,看看Excel如何3步给证件照换底色!
    Python完成证件照换底色​​注:​​该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流。不久前,我写了一篇关于Python怎么给证件照换底色的文章,阅读2万+,评论102,点......
  • python自动化办公之python操作PPT
    python自动化文章一直深受广大python爱好者的青睐。基于此,我花了整整一周时间真理出来的python自动化文档手册,涉及到六个章节(如下图所示):①python使用openpyxl操作excel;......
  • 太牛逼了!用 Python 实现抖音上的“人像动漫化”特效,原来这么简单!
    关注微信公众号『数据分析与统计学之美』,后台回复"人像动漫画"获取本文完整代码和素材。前今天,女友拉着我和她玩儿抖音,就是这个​​人像动漫化​​的操作,顿时觉得很好玩儿......
  • Arrow,一个更好用的Python时间序列处理库!
    本文大纲总有人问我,应该​​怎么学习​​​某个知识点?下面的大纲就是很好的证明了。不管学习什么,总结和对比是很有必要的,这就是我们说的逻辑。当你把某个知识点的​​学习逻......
  • 刚学完python自动化系列文章,就接了一单任务
    如果觉得文章写得好,如果你想要博客文章中的数据,请关注公众号:【数据分析与统计学之美】,进群和作者交流!1、需求该文是一个群友找到我,然后让我做的,要求我下午两点之前提交给他......
  • 每天工作忙,学会python自动收发邮件,代替你问候女友
    如果觉得文章写得好,如果你想要博客文章中的数据,请关注公众号:【数据分析与统计学之美】,进群和作者交流!目录  ​​1、相关库介绍​​​    ​​​​​​1)yagmail​​​......
  • 所有的Python “爬虫“ 初学者,都应该看这篇文章!
    前段时间,黄同学为大家写了一篇​​爬虫​​保姆级文章,大家非常喜欢。链接如下:3000字“婴儿级”爬虫图文教学|手把手教你用Python爬取“实习网”!这篇文章其实已经是基础......
  • python实现RFM建模
    如果觉得文章写得好,如果你想要博客文章中的数据,请关注公众号:【数据分析与统计学之美】,添加作者【个人微信】,进群和作者交流!目录  ​​1、RFM模型的含义​​​  ​​2、......
  • python爬取招聘网站数据,利用tableau可视化交互大屏,指导你如何学习、找工作!
    如果觉得文章写得好,如果你想要博客文章中的数据,请关注公众号:【数据分析与统计学之美】,添加作者【个人微信】,进群和作者交流!目录  ​​1、项目背景​​​  ​​​​​​......
  • EDG夺冠,用Python分析一波:粉丝都炸锅了
    本文禁止转载EDG夺冠,粉丝炸锅了!北京时间11月6日,在英雄联盟S11总决赛中,中国LPL赛区战队EDG电子竞技俱乐部以3∶2战胜韩国LCK赛区战队DK,获得2021年英雄联盟全球总决赛冠军。这......