看看如何用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给文本创立向量空间模型的教程
Apr 23 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
Sep 21 Python
Python脚本实时处理log文件的方法
Nov 21 Python
Python字符串处理实现单词反转
Jun 14 Python
python去除扩展名的实例讲解
Apr 23 Python
实践Vim配置python开发环境
Jul 02 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 Python
python实现单链表的方法示例
Sep 03 Python
python函数声明和调用定义及原理详解
Dec 02 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
Python实现像awk一样分割字符串
Sep 15 Python
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
90行Python代码开发个人云盘应用
基于python实现银行管理系统
python爬虫框架feapde的使用简介
Apr 20 #Python
python实现大文本文件分割成多个小文件
Apr 20 #Python
Python绘制分类图的方法
You might like
用php写的serv-u的web申请账号的程序
2006/10/09 PHP
PHP date函数参数详解
2006/11/27 PHP
Php Mssql操作简单封装支持存储过程
2009/12/11 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
JavaScript prototype属性使用说明
2010/05/13 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
JS实现留言板功能
2017/06/17 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
js实现随机圆与矩形功能
2020/10/29 Javascript
关于uniApp editor微信滑动问题
2021/01/15 Javascript
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
django列表筛选功能的实现代码
2020/03/27 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
个人求职简历的自我评价
2013/10/19 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书