天秀!用python绘制价值200W的小米新logo
Crossin的编程教室
共 2866字,需浏览 6分钟
·
2021-04-24 02:21
200-30 优惠码:NR9EZR
300-60 优惠码:HNZVTA
有效期:4.12-4.23
可叠加官方满减优惠;限当当自营(教辅教材除外)
当当小程序、APP 和网站都可使用
详细使用方法见文章:
最终呈现效果
小米 “新” 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
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) # 设置保存图片的透明值
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://blog.csdn.net/frank_haha/article/details/115361238
获取资源
以上图片和代码,均已打包,大家可以自由获取哦!在公众号里回复关键字:logo
如果文章对你有帮助,欢迎转发/点赞/收藏~
作者:黄伟呢
_往期文章推荐_
评论