Python实现小米新Logo:超椭圆公式与图像处理详解

青禾
青禾
发布时间:2026-10-14| 4人浏览过
原创

本文详细解析小米新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的完整教程。如需了解更多相关技术细节,请持续关注本站发布的其他文章。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。