如何利用Python给自己的头像加一个小国旗(小月饼)
(编辑:jimmy 日期: 2024/11/17 浏览:3 次 )
今年国庆节也是中秋节,首先祝大家节日快乐,本文我们使用 Python 来给自己的头像加一个小国旗或小月饼。
国旗
对于国旗,我们可以使用 Python 来画一个,用到的 Python 库是大家比较熟悉的 turtle,我们的五星红旗组成元素包括:红底、一颗黄的主星和四颗黄的副星。
首先画一个长方形的红底,代码实现如下:
turtle.setup(600, 400, 0, 0) turtle.bgcolor("red")
效果如下:
接着画一颗主星,代码实现如下:
turtle.fillcolor("yellow") turtle.color('yellow') turtle.speed(10) # 主星 turtle.begin_fill() turtle.up() turtle.goto(-280,100) turtle.down() for i in range (5): turtle.forward(150) turtle.right(144) turtle.end_fill()
效果如下:
最后画四颗副星,代码实现如下:
# 副星1 turtle.begin_fill() turtle.up() turtle.goto(-100,180) turtle.setheading(305) turtle.down() for i in range (5): turtle.forward(50) turtle.left(144) turtle.end_fill() # 副星2 turtle.begin_fill() turtle.up() turtle.goto(-50,110) turtle.setheading(30) turtle.down() for i in range (5): turtle.forward(50) turtle.right(144) turtle.end_fill() # 副星3 turtle.begin_fill() turtle.up() turtle.goto(-40,50) turtle.setheading(5) turtle.down() for i in range (5): turtle.forward(50) turtle.right(144) turtle.end_fill() # 副星4 turtle.begin_fill() turtle.up() turtle.goto(-100,10) turtle.setheading(300) turtle.down() for i in range (5): turtle.forward(50) turtle.left(144) turtle.end_fill()
最终效果如下:
月饼
对于月饼也可以用 Python 来画一个,月饼组成元素主要包括:外层圆形的花纹轮廓、内层轮廓和文字。
首先来画外层圆形的花纹轮廓,代码实现如下:
turtle.speed(100) turtle.color("#F5E16F") for i in range(20): # 顺时针移动18度 turtle.right(18) turtle.begin_fill() # 向前移动的距离 turtle.forward(220) # 画半径为 40 的半圆 turtle.circle(40, 180) # 画完半圆之后回到(0,0) turtle.goto(0, 0) turtle.right(360) turtle.end_fill()
效果如下:
再接着画内层轮廓,代码实现如下:
# 设置画笔粗细 turtle.pensize(20) # 填充颜色(外部、内部) turtle.color("#F5E16F", "#FF9933") goto(0, -200) # 准备开始填充 turtle.begin_fill() turtle.circle(200) # 填充结束 turtle.end_fill() turtle.right(360) turtle.color('#F5E16F') goto(0, -180) for i in range(12): turtle.begin_fill() turtle.circle(60, 120) turtle.left(180) turtle.circle(60, 120) turtle.end_fill()
效果如下:
最后来添加文字,比如豆沙馅的就添加豆沙两个字,代码实现如下:
turtle.color("#F5E16F") turtle.write("豆沙", font=("隶书", 60, "bold"))
最终效果如下:
头像加国旗(月饼)
最后,我们将刚才画好的国旗或月饼加到自己的头像上,用到的 Python 库是 OpenCV,安装使用 pip install opencv-python
命令即可,如果速度太慢,可以使用 pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-python
加速下载安装。
这个功能实现起来也比较简单,只需十几行 Python 代码就可以搞定,代码实现如下:
# 读取头像和国旗图案 img_head = cv2.imread('head.jpg') img_flag = cv2.imread('flag.png') # 获取头像和国旗图案宽度 w_head, h_head = img_head.shape[:2] w_flag, h_flag = img_flag.shape[:2] # 计算图案缩放比例 scale = w_head / w_flag / 4 # 缩放图案 img_flag = cv2.resize(img_flag, (0, 0), fx=scale, fy=scale) # 获取缩放后新宽度 w_flag, h_flag = img_flag.shape[:2] # 按 3 个通道合并图片 for c in range(0, 3): img_head[w_head - w_flag:, h_head - h_flag:, c] = img_flag[:, :, c] # 保存最终结果 cv2.imwrite('new_head.jpg', img_head)
假如我的原头像如下:
给头像加个小国旗,效果如下:
给头像加个小月饼,效果如下:
总结
下一篇:Python通过fnmatch模块实现文件名匹配