国庆马上到了,用python实现国旗头像
马上国庆了,来波国庆头像烘托一下氛围,找这个实现代码也是磕磕绊绊,东拼西凑,为了方便大家使用,我直接封装好了,文末也附有实现所需的所有素材,包含py文件的代码以及字体包,有没有基础都能跑得了
效果图带有国旗发不出来
接下来我们来讲讲实现的方式吧!
首先环境准备,基础的python开发环境,PIL图片处理库,没有的话pip一下
pip install Pillow
然后我们介绍一下代码里字体位置怎么获取,
首先,从我的代码打包文件得到的字体,复制到C:\Windows\Fonts这个文件夹下,它会自动安装,安装完成之后找到这个字体,右键单击,进入属性/安全/对象名称就是了,复制出来,填到代码里就可以了
图片展示
到这里准备工作就完成了,把你的头像放到代码同级文件夹下,改一下代码里的文件名称,或者将你的头像文件名称改为1.jpg,就能跑了
国旗头像生成实现代码
def get_guoqitouxiang(touxiang_img,guoqi_img):'''这个函数可以完成头像与国旗的渐变融合,返回一个img对象'''key = 3.2 # 修改key值可以调整国旗的范围,推荐2~4之间的数字,支持小数motherland_flag = Image.open(guoqi_img)head_picture = Image.open(touxiang_img)# 截图国旗上的五颗五角星flag_width, flag_height = motherland_flag.sizecrop_flag = motherland_flag.crop((66, 0, flag_height + 66, flag_height))# 将国旗截图处理成颜色渐变for i in range(flag_height):for j in range(flag_height):color = crop_flag.getpixel((i, j))distance = int(math.sqrt(i * i + j * j))alpha = 255 - int(distance // key)new_color = (*color[0:-1], alpha if alpha > 0 else 0)crop_flag.putpixel((i, j), new_color)# 修改渐变图片的尺寸,适应头像大小,粘贴到头像上new_crop_flag = crop_flag.resize(head_picture.size)head_picture.paste(new_crop_flag, (0, 0), new_crop_flag)# head_picture.save('国旗头像.png')return head_picture
到这一步可以实现头像与国旗的渐变融合
!
接下来就是图片加文字,可以加任意文字,文字的大小、颜色、位置都是可以自行更改的,我这里加的是姓氏
实现代码:
def plus_word(touxiang_img,guoqi_img):'''这个函数可以实现在图片上写入文字,文字的颜色、大小,位置可以自行设置'''head_picture = get_guoqitouxiang(touxiang_img,guoqi_img)print('国旗头像生成成功,正在写入文字...')draw = ImageDraw.Draw(head_picture)# 设置字体,如果没有,也可以不设置,通过修改这里的数字大小,改变文字的大小font = ImageFont.truetype(r"C:\Users\smile25801\AppData\Local\Microsoft\Windows\Fonts\Aa福禄榜书.ttf", 140)font1 = ImageFont.truetype(r"C:\Users\smile25801\AppData\Local\Microsoft\Windows\Fonts\Aa福禄榜书.ttf", 30)# 通过改变第一个元组的数据,改变文字在图片中的位置,(x,y),图片左上角是(0,0),x轴向右增大,y轴向下增大draw.text((710, 80), u"游", fill='#DC143C', font=font)draw.text((710, 230), u"我爱我的国", fill='#DC143C', font=font1)# head_picture.show()now = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')head_picture.save(f'{now}国旗头像带姓氏.png')print('头像保存成功')
到这里主要的功能函数就实现了,接下来定义一个主函数调用就行了
实现代码:
def run():touxiang = '1.jpg'guoqi = '国旗1024.png'print('-----------------------开始执行-----------------------')start = time.time()plus_word(touxiang,guoqi)end = time.time()print(f'执行结束,用时{end-start}秒')
好,最后上一下完整代码和效果图
from PIL import Image,ImageDraw,ImageFont
import math,datetime
import timedef get_guoqitouxiang(touxiang_img,guoqi_img):'''这个函数可以完成头像与国旗的渐变融合,返回一个img对象'''key = 3.2 # 修改key值可以调整国旗的范围,推荐2~4之间的数字,支持小数motherland_flag = Image.open(guoqi_img)head_picture = Image.open(touxiang_img)# 截图国旗上的五颗五角星flag_width, flag_height = motherland_flag.sizecrop_flag = motherland_flag.crop((66, 0, flag_height + 66, flag_height))# 将国旗截图处理成颜色渐变for i in range(flag_height):for j in range(flag_height):color = crop_flag.getpixel((i, j))distance = int(math.sqrt(i * i + j * j))alpha = 255 - int(distance // key)new_color = (*color[0:-1], alpha if alpha > 0 else 0)crop_flag.putpixel((i, j), new_color)# 修改渐变图片的尺寸,适应头像大小,粘贴到头像上new_crop_flag = crop_flag.resize(head_picture.size)head_picture.paste(new_crop_flag, (0, 0), new_crop_flag)# head_picture.save('国旗头像.png')return head_picturedef plus_word(touxiang_img,guoqi_img):'''这个函数可以实现在图片上写入文字,文字的颜色、大小,位置可以自行设置'''head_picture = get_guoqitouxiang(touxiang_img,guoqi_img)print('国旗头像生成成功,正在写入文字...')draw = ImageDraw.Draw(head_picture)# 设置字体,如果没有,也可以不设置,通过修改这里的数字大小,改变文字的大小font = ImageFont.truetype(r"C:\Users\smile25801\AppData\Local\Microsoft\Windows\Fonts\Aa福禄榜书.ttf", 140)font1 = ImageFont.truetype(r"C:\Users\smile25801\AppData\Local\Microsoft\Windows\Fonts\Aa福禄榜书.ttf", 30)# 通过改变第一个元组的数据,改变文字在图片中的位置,(x,y),图片左上角是(0,0),x轴向右增大,y轴向下增大draw.text((710, 80), u"游", fill='#DC143C', font=font)draw.text((710, 230), u"我爱我的国", fill='#DC143C', font=font1)# head_picture.show()now = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')head_picture.save(f'{now}国旗头像带姓氏.png')print('头像保存成功')def run():touxiang = '1.jpg'guoqi = '国旗1024.png'print('-----------------------开始执行-----------------------')start = time.time()plus_word(touxiang,guoqi)end = time.time()print(f'执行结束,用时{end-start}秒')if __name__ == '__main__':run()
传送门:完整代码及所有资料打包
国庆马上到了,用python实现国旗头像相关推荐
- python头像右上角加红色数字_利用python实现微信头像加红色数字功能
通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 实现过程: 准备两张图片如下: 使用PIL图像处理库,导入moudle ...
- Python玩微信头像组字
Python玩微信头像组字 思路 itchat 获取头像图片 汉字转点阵 头像图片拼接 九宫格效果 回顾 代码 最后 上一篇,用Python实现了拿微信好友头像来拼接背景,融合成自己的新头像. 再之前 ...
- python程序设置头像_利用python实现微信头像加红色数字功能
通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 实现过程: 准备两张图片如下: 使用PIL图像处理库,导入moudle ...
- 用python画国旗的程序_用python画的五星红旗
###迎国庆,用Python语言画一面国旗### 初学者,很多地方比较繁琐. #FiveStar.py import turtle turtle.setup(width=0.9, height=0.9 ...
- 国庆不去哪儿:用python爬虫爬取热门景点并生成热力图
前言:本文建议有一定Python基础和前端(html,js)基础的盆友阅读,零基础可以去看我之前的文.(咳咳,不能总更小白文,这样显得我不(mei)够(you)专(xue)业(xi)). 金秋九月,丹 ...
- python画国旗和八卦图
文章目录 前言 一.国旗 二.八卦图 总结 前言 今天继续画图. 一.国旗 国旗由五个五角星和一个红色组成. 代码: import turtleturtle.bgcolor("red&quo ...
- 国庆旅游3天,Python 把我的疲倦治愈了
陪女朋友出了趟远门,途中心情愉悦景色宜人,不过累也是真的累,谁想到前脚刚踏回家门的我,刚准备休息,就收到了这样的消息: 把图片逐一保存,没想到她几天功夫竟然拍了小两百张照片. 这就有点让我为难了:首先 ...
- 如何用python画国旗?
1.五星红旗 代码: import turtle turtle.speed(10) #中国国旗 turtle.up() turtle.goto(-200,200) turtle.down() turt ...
- 用python画国旗的程序_利用python画国旗(示例)
概述 昨天在网上看到有人利用turtle模块画出了五角星,觉得很好玩.晚上睡觉前想,这样的话其实可以画国旗啊.于是编写了下面的代码.可是!我并没有准确的设计方法,所以不敢擅自画国旗啊.如果谁有标准的设 ...
- 用Python画国旗
我们生在红旗下,长在春风里.人民有信仰,国家有力量. 用python(turlte库)画出我们的五星红旗. import turtle import matht = turtle.Pen() widt ...
最新文章
- [2017.02.23] Java8 函数式编程
- iOS自定义简易刷新视图(仿MJRefresh)
- 217. Contains Duplicate - LeetCode
- 虚拟机中dns配置好了但是域名ping不同_弱电工程中常用的几个网络命令,学会后轻松变高手...
- python之_init_函数的简介
- 返回路径平面上的间隙_裁切机的上刀下刀如何调整?
- Mysql编辑工具中使用(Navicat查询结果显示行号)
- MySQL Aggregate (GROUP BY) Function Descriptions
- [Windows Phone] 如何在 Windows Phone 应用程式制作市集搜寻
- 群晖NAS设备MIB手册
- Halcon:多张图片合并成一张图片
- android https HttpsURLConnection 忽略证书
- 可在WPS环境中通用的vb6代码修改方法
- 计算机视觉-图像处理基础
- 学习ELMo从文本中提取特征的分步NLP指南
- centos7 安装docker 报错 conflicts with file from package
- 计算机语言space什么意思,space是什么意思
- openedx学习笔记
- Python字典的key都可以是什么
- J2ME jar文件编译为BlackBerry cod文件