天秀!用python绘制价值200W的小米新logo

Crossin的编程教室

共 2866字,需浏览 6分钟

 ·

2021-04-24 02:21


📙【当当书香节优惠码】📕

200-30 优惠码:NR9EZR 

300-60 优惠码:HNZVTA 

有效期:4.12-4.23

可叠加官方满减优惠;限当当自营(教辅教材除外)

当当小程序、APP 和网站都可使用

详细使用方法见文章: 

推荐一本经典计算机基础书籍(附当当优惠码)


最终呈现效果

大家好,欢迎来到 Crossin的编程教室 !
先容我笑一下……哈哈哈哈哈……咳咳
咱们在讲述之前,首先看看最终呈现的效果吧,整体来说还是很不错的。

小米 “新” logo背后的数学

前段时间,小米公司发布了一条微博,引发了热议,原来小米换了新logo了。
很多人,都觉得雷总被骗了。说实话,我当时猛的一看,也是很蒙蔽,可能咋们不懂美学,不懂新logo背后蕴藏的文化底蕴吧!

但是,原设计者原研哉说到:最新设计的小米logo,融入了东方哲学的思考,从而提出了一个具有「超椭圆」数学之美的小米新 LOGO,同时还增加了黑色和科技银来作为小米品牌色彩的新搭档。
原研哉还说到:在验证的过程中,用到了一个数学公式。
从上面的公式可以看到,这里有一个n,因此可以知道:上述公式能够绘制出n种类型的超椭圆。而设计者最终推荐使用n=3这一形状。
n=3时的超椭圆公式如下所示,其中x的取值范围为[-1, 1]。
转换以后,可以得到如下公式:

Python绘制新logo流程

① 绘图原理
在正式绘图之前,我们先来讲述一下Python绘制新logo的“绘图原理”。掌握了原理后,剩下的问题就交给代码吧。
  • ① 利用 “超椭圆” 公式,绘制一个带填充色的椭圆;
  • ② 遍历 “旧logo” 上的像素值,保留白色 “米字” 处的像素值;
  • ③ 将带“米字” 的像素值,写入第一步的超椭圆中;
② 重要知识点的普及
关于整个代码,有几个函数需要给大家提一下,为了大家更够很快学习。但是不会讲解的很详细,大家可以根据说明,自行下去查阅相关资料。
  • 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 Image
接着,利用上面 提到的公式,绘制一个不留白的n=3的超椭圆。
x = np.linspace(-111000)
y = + pow(1-abs(pow(x, 3)), 1/3# 注意公式的写法
z = - pow(1-abs(pow(x, 3)), 1/3# 注意公式的写法
plt.figure(figsize=(1212)) # 画布大小

plt.plot(x, y, color=(255/255103/2550))
plt.plot(x, z, color=(255/255103/2550))
plt.fill(x, y, color=(255/255103/2550)) # 填充颜色
plt.fill(x, z, color=(255/255103/2550)) # 填充颜色
plt.axis('off'# 不显示坐标轴
plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0)
plt.margins(00)
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的轮廓曲线

https://blog.csdn.net/frank_haha/article/details/115361238

获取资源

以上图片和代码,均已打包,大家可以自由获取哦!在公众号里回复关键字:logo

如果文章对你有帮助,欢迎转发/点赞/收藏~

作者:黄伟呢

来源:数据分析与统计学之美


_往期文章推荐_

用Python画个哆啦A梦




如需了解付费精品课程教学答疑服务
请在Crossin的编程教室内回复: 666

浏览 56
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报