看看如何用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设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
Python 循环语句之 while,for语句详解
Apr 23 Python
python处理数据,存进hive表的方法
Jul 04 Python
Python批处理删除和重命名文件夹的实例
Jul 11 Python
python3.7.0的安装步骤
Aug 27 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 Python
Python正则表达式如何匹配中文
May 27 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
90行Python代码开发个人云盘应用
基于python实现银行管理系统
python爬虫框架feapde的使用简介
Apr 20 #Python
python实现大文本文件分割成多个小文件
Apr 20 #Python
Python绘制分类图的方法
You might like
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
Angular实现的简单定时器功能示例
2017/12/28 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
haskell实现多线程服务器实例代码
2013/11/26 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
分析python请求数据
2018/08/19 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
财务副总经理工作职责
2013/11/25 职场文书
银行演讲稿范文
2014/01/03 职场文书
部队党性分析材料
2014/02/16 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
水毁工程实施方案
2014/04/01 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
自我评价优缺点范文
2015/03/11 职场文书
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL
python基础之文件操作
2021/10/24 Python
Golang jwt身份认证
2022/04/20 Golang