文章目录

  • 1. 写在前面
  • 2. 素材准备
  • 3. 依赖模块
  • 4. 画超椭圆
  • 5. 合成新图
  • 6. 效果展示
  • 7. 相关推荐
  • 8. 引用参考

1. 写在前面

近日,小米公司发布新logo引发网友热议。

耗时2年,花费200万设计的新logo被吐槽,很多网友发表评论调侃。

乍一眼看确实是这样,不就是将方角矩形换成圆角矩形了嘛。

正所谓,外行人看热闹,内行人看门道。其实新logo边缘的形状并不是圆角矩形,而是超椭圆。

超椭圆有很多种类型,设计师原研哉最终采取的是n=3这一形状。

接下来我们便在python中,根据这一超椭圆公式来画图,并完成小米新logo的制作。

2. 素材准备

xiaomi_old_logo.png,像素1200 x 1200:https://img-blog.csdnimg.cn/2021040414023076.png

3. 依赖模块

pip install matplotlib
pip install pillow

4. 画超椭圆

n=3时的超椭圆公式:∣x3∣+∣y3∣=1|x^{3}|+|y^{3}|=1∣x3∣+∣y3∣=1,其中xxx的取值范围为[-1, 1]

因为我们要在matplotlib中绘图,需要将公式转换为yyy关于xxx的函数方程:
f(x)={+1−∣x3∣3−1≤x≤1−1−∣x3∣3−1≤x≤1f(x)=\left\{ \begin{array}{rcl} +\sqrt[3]{1-|x^{3}|}&{-1 \leq x \leq 1}\\ -\sqrt[3]{1-|x^{3}|}&{-1 \leq x \leq 1} \end{array} \right. f(x)={+31−∣x3∣​−31−∣x3∣​​−1≤x≤1−1≤x≤1​

import matplotlib.pyplot as plt
import numpy as npx = 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('superellipse.png', transparent=True, dpi=100) # 1200 x 1200,设置透明,不留白

superellipse.png,像素1200 x 1200:https://img-blog.csdnimg.cn/20210404142251266.png

5. 合成新图

提取旧logo中白色mi字部分并覆盖到对应像素位置的超椭圆图片上。(白色的rgb值为255,255,255)

from PIL import Imageim_1 = Image.open('xiaomi_old_logo.png')
im_2 = Image.open('superellipse.png')w, h = im_1.sizefor i in range(w):for j in range(h):data = im_1.getpixel((i, j))if data == (255,)*4:im_2.putpixel((i, j), (255,)*4)im_2.save('xiaomi_new_logo.png')

6. 效果展示

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.figure(figsize=(10, 5))
plt.subplot(121)
plt.title('新')
plt.axis('off')
plt.imshow(plt.imread('xiaomi_new_logo.png'))
plt.subplot(122)
plt.title('旧')
plt.axis('off')
plt.imshow(plt.imread('xiaomi_old_logo.png'))
plt.savefig('comparation.png', dpi=144)
plt.show()

7. 相关推荐

这里推荐一个在线函数曲线生成工具:https://www.desmos.com/calculator?lang=zh-CN

8. 引用参考

https://pillow-cn.readthedocs.io/zh_CN/latest/reference/Image.html#PIL.Image.Image.putpixel

【python】我用30行代码实现了小米新logo的制作相关推荐

  1. Python程序员30行代码素描表白!网友:花里胡哨

    总有人说程序员不够浪漫!其实我们只是没时间而已,等我们有时间了,还有普通人什么事儿?最近就有一个小伙伴上热搜了! 原来他用Python给可爱的女朋友画了一幅素描!不到30行代码,一起来学学给她一个惊喜 ...

  2. 【python实战】---- 30行代码提取个人值班表

    1. 需求是这样的 公司实行项目值班制度,拿到值班表,看到全部的值班信息,要去查找自己的值班信息,是一件头痛的事情.作为程序,当然要简化,将自己的信息提炼出来! 2. 查找操作 Excel 模块 xl ...

  3. python你TM太皮了——区区30行代码就能记录键盘的一举一动

    先看看效果 Like This↓ 一.公共WiFi 公用电脑什么的 在我们日常在线上工作.玩耍时,不论开电脑.登录淘宝.玩网游 统统都会用到键盘输入 在几乎所有网站,例如淘宝.百度.126邮箱等等 为 ...

  4. 一个包含30行代码的Python项目:如何在您最喜欢的Twitcher流式传输时设置SMS通知...

    Hi everyone :) Today I am beginning a new series of posts specifically aimed at Python beginners. Th ...

  5. python制作表白神器_程序员的七夕用30行代码让Python化身表白神器

    转眼又到了咱们中国传统的情人节七夕了,今天笔者就带大家来领略一下用Python表白的方式.让程序员的恋人们感受一下IT人的浪漫. 一.词云制作 首先咱们可以用之前介绍过的wordcould包制作词云. ...

  6. vb.net读取excel并写入dgv_读取PDF中的表格写入EXCEL?30行代码搞定

    办公自动化系列+1 现在,各类数据分析的书籍,都可以在网上找到PDF版本: 同时,百度文库.各类数据统计文库.行业研究等众多论文报告,是通过PDF的形式去展示输出的: 但是,令人都头疼的是,各类数据分 ...

  7. 30 行代码实现蚂蚁森林自动“偷”能量

    作者 | xindoo 来源 | CSDN 博客,已获作者授权 虽然我支付宝加了好多好友,平时有很多能量可以"偷",但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化. ...

  8. 太厉害了!30行代码抓取上万个小姐姐跳舞视频,有点飘了~

    点上方"菜鸟学Python",选择"星标" 第481篇原创干货,第一时间送达 大家好,我是菜鸟哥!这个我第481篇原创! 今天又给大家带来一个有趣的Python ...

  9. 代码补全快餐教程(1) - 30行代码见证奇迹

    代码补全快餐教程(1) - 30行代码见证奇迹 下面是我用30多行代码,包含了很多空行和注释的代码写成的代码补全模型.我们先看看效果吧. 补全效果案例 先来看个比较普通的(Python, Keras) ...

  10. 30 行代码实现蚂蚁森林自动收能量(附送源码)

    点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达! blog.csdn.net/article/details/113734855 推荐:https://www.xttblog.com/?p= ...

最新文章

  1. 【C 语言】二级指针内存模型 ( 指针数组 | 二维数组 | 自定义二级指针 | 将 一、二 模型数据拷贝到 三 模型中 并 排序 )
  2. springmvc+log4j操作日志记录,详细配置
  3. mysql auto position_MHA-Failover(GTID,Auto_Position=0)
  4. 14/100. Merge Two Sorted Lists
  5. 校招需要看的书 巩固的知识
  6. 荐 Intellij IDEA创建Maven Web项目(带有webapp文件夹目录的项目)
  7. python 栈和队列_python 栈和队列的基本实现
  8. Selenium代码示例
  9. mysql sqlsugar_sqlSugar的使用---入门
  10. 通过Mybatis获取mysql表中重复记录的方法
  11. Linux服务器时间快8个小时,Linux系统时间快8小时解决方案
  12. 用计算机和手算标准差不一致,计量师基础知识教案二第三章.ppt
  13. Hbuilder x安装教程(前端html5开发)
  14. android 仿手写字体下载,手写毛笔字体在线生成器-手写毛笔字软件下载v1.0 安卓版-西西软件下载...
  15. 微信公众号授权登录重复登录不跳转
  16. 【012】SylixOS嵌入式实时操作系统助力中国航天事业
  17. html字两边的横线_css实现中间文字 两边横线(原创)
  18. 今日头条搜索排名seo怎么做?今天头条网站优化规则揭秘!
  19. 图像分类:从13个Kaggle竞赛中总结技巧
  20. 计算机 北航 在线作业,北航计算机组成原理在线作业

热门文章

  1. 正则匹配以xx开头以xx结尾的单词(转载)
  2. Cesium 影像卷帘对比
  3. 第三章 原位正三和弦的连接
  4. 腾讯内部深度文章曝光:微信向左 手机QQ向右
  5. Test类中的@testSetup标注 测试环境数据准备
  6. 小白电赛备战(1)msp430 f5529数据手册(中英文)
  7. 力扣刷题 DAY_63 回溯
  8. ubuntu 18.04 install tensorflow-nightly-gpu and tfp-nightly
  9. HTTP GET 请求在请求体中带参数的问题
  10. web页面PC端和移动端的区别