Python实现小米新Logo:超椭圆公式与图像处理详解
本文详细解析小米新Logo背后的数学原理,重点介绍如何利用Python的Matplotlib库绘制超椭圆,并结合PIL库处理像素数据,实现旧Logo“米”字图案与新背景的融合。文章提供完整代码逻辑与关键函数说明,帮助开发者复现这一设计效果。
最终呈现效果
在深入技术细节之前,我们先直观地看一下最终生成的Logo效果。整体视觉表现符合预期,红色基调鲜明,造型流畅。

小米 “新” logo背后的数学
近期,小米公司通过微博发布了品牌焕新的消息,其中新Logo的设计引发了广泛讨论。

部分网友对此次更换表示不解,甚至调侃设计师“被坑”。初看之下,新Logo确实与旧版差异显著,这或许是因为大众对其中蕴含的美学理念和文化内涵尚不熟悉。

然而,原设计者原研哉指出,新Logo融入了东方哲学思考,核心在于引入了“超椭圆”这一数学概念,赋予Logo独特的几何美感。同时,品牌色彩也进行了调整,增加了黑色和科技银作为新的辅助色。
原研哉在验证设计时,依赖了一个特定的数学公式来确定形状。

观察该公式可知,其中包含参数n,这意味着通过调整n的值,可以生成不同形态的超椭圆。最终,设计团队选定n=3作为标准形状,这也是本文代码实现的重点。


Python绘制新logo流程
在编写代码之前,明确绘图的基本原理至关重要。理解原理后,具体的实现工作即可交由代码完成。
- 第一步,利用“超椭圆”公式绘制一个带有填充色的基础图形。
- 第二步,遍历旧版Logo图片的像素数据,筛选并保留白色“米”字部分的像素信息。
- 第三步,将处理后的“米”字像素数据写入到第一步生成的超椭圆背景中,完成合成。
在代码实现过程中,有几个关键函数需要特别说明,以便读者快速上手。此处仅作简要介绍,详细用法建议参考官方文档。
- plt.fill():用于为绘制的图形区域填充指定颜色。
- plt.axis():用于控制坐标轴的显示或隐藏,此处用于去除坐标轴以符合Logo展示需求。
- plt.subplots_adjust()和plt.margins():这两个函数用于调整画布边距,去除图形周围多余的留白,使图像更紧凑。
- image.getpixel():用于读取指定坐标位置的像素值。
- image.putpixel():用于在指定坐标位置写入新的像素值。
以下是完整的实现代码。首先导入必要的Python库:
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
接下来,利用前述公式绘制一个不留白的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')
获取资源
文中涉及的所有图片及代码文件均已打包,读者可自行下载获取。
链接:https://pan.baidu.com/s/1K1Kjmwnsj8NFtZRqWbZW6g 提取码:deoy
以上即为使用Python绘制小米新版Logo的完整教程。如需了解更多相关技术细节,请持续关注本站发布的其他文章。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













