看看如何用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中isnumeric()方法的使用简介
May 19 Python
Python列表切片用法示例
Apr 19 Python
python3 对list中每个元素进行处理的方法
Jun 29 Python
python pyheatmap包绘制热力图
Nov 09 Python
一百行python代码将图片转成字符画
Feb 19 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
通过实例解析python描述符原理作用
Jan 22 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
Mar 20 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
通过Python实现Payload分离免杀过程详解
Jul 13 Python
django数据模型中null和blank的区别说明
Sep 02 Python
谈谈python垃圾回收机制
Sep 27 Python
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
90行Python代码开发个人云盘应用
基于python实现银行管理系统
python爬虫框架feapde的使用简介
Apr 20 #Python
python实现大文本文件分割成多个小文件
Apr 20 #Python
Python绘制分类图的方法
You might like
php中的时间显示
2007/01/18 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
js实现秒表计时器
2019/12/16 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
深入理解Python中的*重复运算符
2017/10/28 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
Django 自定义分页器的实现代码
2019/11/24 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
在python3.64中安装pyinstaller库的方法步骤
2020/06/02 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
德国团购网站:Groupon德国
2018/03/13 全球购物
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
超市后勤自我鉴定
2014/01/17 职场文书
外国人聘用意向书
2014/04/01 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
小学运动会口号
2014/06/07 职场文书
本科生求职信
2014/06/17 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python