最终呈现效果

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

小米 “新” 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(-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.sizefor 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

获取资源

以上图片和代码,均已打包,大家可以自由获取哦!

  • 1. 关注小编
  • 2. 申请QQ群:705933274  免费领取

天秀!花费 200W 设计的新版“小米”logo,看看用Python怎么绘制?相关推荐

  1. Google-优秀移动站点设计10招

    Google-优秀移动网站设计10招 1)添加一个醒目的搜索条:在移动终端上,人们希望能够快速找到自己需要的东西 2)把大表格拆分成小块:别搞一个长长的表格页面,上面包含各种输入框 3)允许用户匿名浏 ...

  2. 2005年度设计软件新版发布回顾

    作者: 小珍 原创 出处: 天极设计在线 随着数码技术的普及,现在普通的摄影爱好者对图像处理技术钻研得非常深透,频频发布自己总结出新的使用技巧,文章和精彩作品遍布在各个摄影论坛.于是图像设计领域的20 ...

  3. Mel滤波器组的设计与实现(基于MATLAB和Python)

    Mel滤波器组的设计与实现(基于MATLAB和Python) 1.Mel滤波器组介绍 在语音的频谱范围内设置若干带通滤波器Hm(k),0≤m<MHm(k),0≤m<M{{H}_{m}}\l ...

  4. 案例:仿小米logo渐变效果练习

    一.效果: 仿小米logo 二.布局思路 三.代码: 代码如下(示例): <!DOCTYPE html> <html lang="en"><head& ...

  5. 设计技巧之:LOGO色彩搭配

    设计技巧之:LOGO色彩搭配 设计技巧之:logo色彩搭配 首先来看一个问题. 一个朋友问:暖色调背景配什么颜色? 字体配什么颜色?是不是非得暖色调 暖色调?还是暖色调 冷色调? 比如说金黄色(C:0 ...

  6. html怎么做小米logo,CSS3:一个标签画LOGO——小米

    一个标签做小米Logo 这两天在米家入手了一特贵的周边,一时兴起想用css制作一下它的logo 至于为什么不用ps?因为我 话不多说,先上原图 HTML代码: 先简单分析一波,这个图片可分为三个部分, ...

  7. 设计一个圆形文字LOGO

    LOGO设计 每一个标志都是独一无二的,它们所代表的含义也是不一样的,我们应该不断学习,不断寻找新的灵感,去设计不一样的LOGO. 那我们开始啦! 设计上图LOGO教程如下: 1.点击插入字符按钮,输 ...

  8. 动态网站的制作与设计_【大师活动】设计及制作动态Logo

    设计及制作动态Logo Creating an Animated Logo 来一起加入动态设计专家Nikki Kipple和新媒体数字艺术家Andrea Pimentel的设计活动中吧!他们将展示整个 ...

  9. 【课程设计】基于Taro+React+Springboot+TaroUI+Python爬虫的网络音乐播放小程序详细设计实现

    [课程设计]基于Taro+React+Springboot+TaroUI+Python爬虫的网络音乐播放小程序详细设计实现 解决触摸穿透 自定义导航栏 文章目录 项目简介 功能截图 1.用户登录注册 ...

最新文章

  1. 为什么不记录慢速查询?
  2. python—函数实例一
  3. [Groovy] Groovy API
  4. ICPC-无限路之城
  5. jsp将鼠标放到那显示信息
  6. CCF202006-2 稀疏向量
  7. B+树 范围查询_为什么 MySQL 使用 B+ 树,而不是 B 树或者 Hash?
  8. 使用epublib自动生成epub文件
  9. python3.7安装opencv4.1_VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
  10. 魔兽争霸III背景渊源
  11. 电力行业数据安全解决方案
  12. flash 火狐总是崩溃_火狐浏览器经常崩溃怎么办,解决Firefox、Flash假死问题
  13. Deep Multi-View Spatial-Temporal Network for Taxi Demand Prediction
  14. C#使用SHA256哈希算法实现简单用户注册与验证
  15. ICGC:国际肿瘤基因组协会简介
  16. 怎么判断电脑是32位还是64位呢
  17. python图片raw转换成jpg
  18. Logo Grabber 一键快速下载网站Logo 的免费插件
  19. JavaScript词汇表
  20. ISO26262:功能安全解决了什么问题?

热门文章

  1. 验证码验证失败的那些事
  2. Fedora32 安装搜狗拼音中文输入法/安装 + FCITX 输入法 Rime/拼音
  3. 【前端-CSS】盒子模型-水平方向、垂直方向的布局
  4. 【MySql】sql语句--批量替换字符串
  5. WebSphere 配置类加载顺序(解决包冲突)
  6. 【Unix/Linux】文件系统介绍 入门
  7. 数据库原理及应用实验三参考答案
  8. moocpython答案_中国大学慕课moocPython编程基础全套答案
  9. 7-13 实验三(2)求3个长方柱的体积 (1 分)
  10. iPhone如何长截屏,这个方法非常简单