看看如何用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 相关文章推荐
PyQt5每天必学之单行文本框
Apr 19 Python
解决pycharm无法识别本地site-packages的问题
Oct 13 Python
python 调用有道api接口的方法
Jan 03 Python
Python离线安装PIL 模块的方法
Jan 08 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
Python二进制文件读取并转换为浮点数详解
Jun 25 Python
Python math库 ln(x)运算的实现及原理
Jul 17 Python
Numpy数组array和矩阵matrix转换方法
Aug 05 Python
Python实现Singleton模式的方式详解
Aug 08 Python
pygame实现打字游戏
Feb 19 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
Python字典取键、值对的方法步骤
Sep 30 Python
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
90行Python代码开发个人云盘应用
基于python实现银行管理系统
python爬虫框架feapde的使用简介
Apr 20 #Python
python实现大文本文件分割成多个小文件
Apr 20 #Python
Python绘制分类图的方法
You might like
支持中文的php加密解密类代码
2011/11/27 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
python操作gmail实例
2015/01/14 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
python中的tcp示例详解
2018/12/09 Python
Django之模型层多表操作的实现
2019/01/08 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
基于Pytorch SSD模型分析
2020/02/18 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
德国网上宠物店:Zoobio
2018/05/23 全球购物
英语自荐信范文
2013/12/11 职场文书
银行奉献演讲稿
2014/09/16 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
初中差生评语
2014/12/29 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
Python 中的Sympy详细使用
2021/08/07 Python