看看如何用Python绘制小米新版天价logo


Posted in Python onApril 20, 2021

最终呈现效果

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

看看如何用Python绘制小米新版天价logo

小米 “新” logo背后的数学

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

看看如何用Python绘制小米新版天价logo

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

看看如何用Python绘制小米新版天价logo

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

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

看看如何用Python绘制小米新版天价logo

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

看看如何用Python绘制小米新版天价logo

看看如何用Python绘制小米新版天价logo

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.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绘制小米logo的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现计算资源图标crc值的方法
Oct 05 Python
wxPython窗口中文乱码解决方法
Oct 11 Python
Python random模块常用方法
Nov 03 Python
使用Python编写类UNIX系统的命令行工具的教程
Apr 15 Python
python基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
Python 中的with关键字使用详解
Sep 11 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
May 09 Python
python统计指定目录内文件的代码行数
Sep 19 Python
利用python3 的pygame模块实现塔防游戏
Dec 30 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
Mar 10 Python
Python如何重新加载模块
Jul 29 Python
Pytorch实验常用代码段汇总
Nov 19 Python
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
90行Python代码开发个人云盘应用
基于python实现银行管理系统
python爬虫框架feapde的使用简介
Apr 20 #Python
python实现大文本文件分割成多个小文件
Apr 20 #Python
Python绘制分类图的方法
You might like
对盗链说再见...
2006/10/09 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
2014/11/12 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
Vue.use源码分析
2017/04/22 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
python实现图片横向和纵向拼接
2020/03/05 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
大专毕业生自我鉴定
2013/11/21 职场文书
初中生物教学反思
2014/01/10 职场文书
小学生安全责任书
2014/07/25 职场文书
就业意向书
2014/07/29 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
代理人委托书
2014/09/16 职场文书
新党章的学习心得体会
2014/11/07 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
教导处教学工作总结
2015/08/12 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
Go语言并发编程 sync.Once
2021/10/16 Golang