看看如何用Python繪制小米新版天價logo
最終呈現(xiàn)效果
哈哈,咋們在講述之前,首先看看最終呈現(xiàn)的效果吧,整體來說還是很不錯的。

小米 “新” logo背后的數(shù)學(xué)
前段時間,小米公司發(fā)布了一條微博,引發(fā)了熱議,原來小米換了新logo了。

很多人,都覺得雷總被騙了。說實(shí)話,我當(dāng)時猛的一看,也是很蒙蔽,可能咋們不懂美學(xué),不懂新logo背后蘊(yùn)藏的文化底蘊(yùn)吧!

但是,原設(shè)計者原研哉說到:最新設(shè)計的小米logo,融入了東方哲學(xué)的思考,從而提出了一個具有「超橢圓」數(shù)學(xué)之美的小米新 LOGO,同時還增加了黑色和科技銀來作為小米品牌色彩的新搭檔。
原研哉還說到:在驗證的過程中,用到了一個數(shù)學(xué)公式。

從上面的公式可以看到,這里有一個n,因此可以知道:上述公式能夠繪制出n種類型的超橢圓。而設(shè)計者最終推薦使用n=3這一形狀。


Python繪制新logo流程
① 繪圖原理
在正式繪圖之前,我們先來講述一下Python繪制新logo的“繪圖原理”。掌握了原理后,剩下的問題就交給代碼吧。
- ① 利用 “超橢圓” 公式,繪制一個帶填充色的橢圓;
- ② 遍歷 “舊logo” 上的像素值,保留白色 “米字” 處的像素值;
- ③ 將帶“米字” 的像素值,寫入第一步的超橢圓中;
② 重要知識點(diǎn)的普及
關(guān)于整個代碼,有幾個函數(shù)需要給大家提一下,為了大家更夠很快學(xué)習(xí)。但是不會講解的很詳細(xì),大家可以根據(jù)說明,自行下去查閱相關(guān)資料。
- ① plt.fill():用于給圖形填充顏色;
- ② plt.axis():用于打開/取消坐標(biāo)軸展示;
- ③ plt.subplots_adjust()和plt.margins():用于去掉圖形外側(cè)多余的留白;
- ④ image.getpixel():用于讀取圖片的像素值;
- ⑤ image.putpixel():用于在指定坐標(biāo)位置處,寫入像素值;
③ 上代碼
首先我們先導(dǎo)入相關(guān)庫:
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') # 不顯示坐標(biāo)軸
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) # 設(shè)置保存圖片的透明值
然后,遍歷舊logo的像素值,保留 “米字” 那一塊兒。將該像素值,寫入上面的 “fill.png” 中。有一點(diǎn)需要注意的是:白色的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的詳細(xì)內(nèi)容,更多關(guān)于python繪制小米logo的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解Python如何實(shí)現(xiàn)批量為PDF添加水印
我們有時候需要把一些機(jī)密文件發(fā)給多個客戶,為了避免客戶泄露文件,會在機(jī)密文件中添加水印。本文將利用Python實(shí)現(xiàn)批量為PDF添加水印,需要的可以參考一下2022-05-05
一文帶你深入了解Python中的GeneratorExit異常處理
GeneratorExit是Python內(nèi)置的異常,當(dāng)生成器或協(xié)程被強(qiáng)制關(guān)閉時,Python解釋器會向其發(fā)送這個異常,下面我們來看看如何處理這一異常吧2025-03-03
Python實(shí)現(xiàn)subprocess執(zhí)行外部命令
Python使用最廣泛的是標(biāo)準(zhǔn)庫的subprocess模塊,使用subprocess最簡單的方式就是用它提供的便利函數(shù),因此執(zhí)行外部命令優(yōu)先使用subprocess模塊,下面就一起來了解一下如何使用2021-05-05
python數(shù)據(jù)分析之用sklearn預(yù)測糖尿病
這篇文章主要介紹了python數(shù)據(jù)分析之用sklearn預(yù)測糖尿病,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python數(shù)據(jù)分析的小伙伴們有很好地幫助,需要的朋友可以參考下2021-04-04
python 讀取視頻,處理后,實(shí)時計算幀數(shù)fps的方法
今天小編就為大家分享一篇python 讀取視頻,處理后,實(shí)時計算幀數(shù)fps的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
使用python?itertools實(shí)現(xiàn)計算雙十一滿減湊單
一年一度的雙十一又到了,在這樣一個日子中,可能遇到一些問題,首先是“湊單”問題,本文將使用python中的itertools庫解決這一問題,感興趣的可以了解下2024-11-11
Python使用Apache Kafka時Poll拉取速度慢的解決方法
在使用Apache Kafka時,poll方法拉取消息速度慢常見于網(wǎng)絡(luò)延遲、消息大小過大、消費(fèi)者配置不當(dāng)或高負(fù)載情況,本文提供了優(yōu)化消費(fèi)者配置、并行消費(fèi)、優(yōu)化消息處理邏輯和監(jiān)控調(diào)試的解決方案,并附有Python代碼示例和相關(guān)類圖、序列圖以幫助理解和實(shí)現(xiàn)2024-09-09

