看看如何用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每次处理固定个数的字符的方法总结
Jan 29 Python
Python中的sort()方法使用基础教程
Jan 08 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
python批量实现Word文件转换为PDF文件
Mar 15 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 Python
VSCode下好用的Python插件及配置
Apr 06 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
python使用信号量动态更新配置文件的操作
Apr 01 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
安装不同版本的tensorflow与models方法实现
Feb 20 Python
基于python实现银行管理系统
Apr 20 Python
详解python的异常捕获
Mar 03 Python
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
90行Python代码开发个人云盘应用
基于python实现银行管理系统
python爬虫框架feapde的使用简介
Apr 20 #Python
python实现大文本文件分割成多个小文件
Apr 20 #Python
Python绘制分类图的方法
You might like
php使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
python基础教程之udp端口扫描
2014/02/10 Python
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
Linux下python3.7.0安装教程
2018/07/30 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
浅谈python3中input输入的使用
2019/08/02 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
大学生入党自我鉴定
2013/10/31 职场文书
设计总监岗位职责
2013/12/07 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
英语老师推荐信
2014/02/26 职场文书
满月酒邀请函
2015/01/30 职场文书
政协委员个人总结
2015/03/03 职场文书
困难补助申请报告
2015/05/19 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript