看看如何用Python繪制小米新版天價logo

最終呈現效果

哈哈,咋們在講述之前,首先看看最終呈現的效果吧,整體來說還是很不錯的。

小米 “新” logo背後的數學

前段時間,小米公司發佈瞭一條微博,引發瞭熱議,原來小米換瞭新logo瞭。

很多人,都覺得雷總被騙瞭。說實話,我當時猛的一看,也是很蒙蔽,可能咋們不懂美學,不懂新logo背後蘊藏的文化底蘊吧!

但是,原設計者原研哉說到:最新設計的小米logo,融入瞭東方哲學的思考,從而提出瞭一個具有「超橢圓」數學之美的小米新 LOGO,同時還增加瞭黑色和科技銀來作為小米品牌色彩的新搭檔。

原研哉還說到:在驗證的過程中,用到瞭一個數學公式。

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

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的資料請關註WalkonNet其它相關文章!