马上国庆了,来波国庆头像烘托一下氛围,找这个实现代码也是磕磕绊绊,东拼西凑,为了方便大家使用,我直接封装好了,文末也附有实现所需的所有素材,包含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实现国旗头像相关推荐

  1. python头像右上角加红色数字_利用python实现微信头像加红色数字功能

    通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 实现过程: 准备两张图片如下: 使用PIL图像处理库,导入moudle ...

  2. Python玩微信头像组字

    Python玩微信头像组字 思路 itchat 获取头像图片 汉字转点阵 头像图片拼接 九宫格效果 回顾 代码 最后 上一篇,用Python实现了拿微信好友头像来拼接背景,融合成自己的新头像. 再之前 ...

  3. python程序设置头像_利用python实现微信头像加红色数字功能

    通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 实现过程: 准备两张图片如下: 使用PIL图像处理库,导入moudle ...

  4. 用python画国旗的程序_用python画的五星红旗

    ###迎国庆,用Python语言画一面国旗### 初学者,很多地方比较繁琐. #FiveStar.py import turtle turtle.setup(width=0.9, height=0.9 ...

  5. 国庆不去哪儿:用python爬虫爬取热门景点并生成热力图

    前言:本文建议有一定Python基础和前端(html,js)基础的盆友阅读,零基础可以去看我之前的文.(咳咳,不能总更小白文,这样显得我不(mei)够(you)专(xue)业(xi)). 金秋九月,丹 ...

  6. python画国旗和八卦图

    文章目录 前言 一.国旗 二.八卦图 总结 前言 今天继续画图. 一.国旗 国旗由五个五角星和一个红色组成. 代码: import turtleturtle.bgcolor("red&quo ...

  7. 国庆旅游3天,Python 把我的疲倦治愈了

    陪女朋友出了趟远门,途中心情愉悦景色宜人,不过累也是真的累,谁想到前脚刚踏回家门的我,刚准备休息,就收到了这样的消息: 把图片逐一保存,没想到她几天功夫竟然拍了小两百张照片. 这就有点让我为难了:首先 ...

  8. 如何用python画国旗?

    1.五星红旗 代码: import turtle turtle.speed(10) #中国国旗 turtle.up() turtle.goto(-200,200) turtle.down() turt ...

  9. 用python画国旗的程序_利用python画国旗(示例)

    概述 昨天在网上看到有人利用turtle模块画出了五角星,觉得很好玩.晚上睡觉前想,这样的话其实可以画国旗啊.于是编写了下面的代码.可是!我并没有准确的设计方法,所以不敢擅自画国旗啊.如果谁有标准的设 ...

  10. 用Python画国旗

    我们生在红旗下,长在春风里.人民有信仰,国家有力量. 用python(turlte库)画出我们的五星红旗. import turtle import matht = turtle.Pen() widt ...

最新文章

  1. [2017.02.23] Java8 函数式编程
  2. iOS自定义简易刷新视图(仿MJRefresh)
  3. 217. Contains Duplicate - LeetCode
  4. 虚拟机中dns配置好了但是域名ping不同_弱电工程中常用的几个网络命令,学会后轻松变高手...
  5. python之_init_函数的简介
  6. 返回路径平面上的间隙_裁切机的上刀下刀如何调整?
  7. Mysql编辑工具中使用(Navicat查询结果显示行号)
  8. MySQL Aggregate (GROUP BY) Function Descriptions
  9. [Windows Phone] 如何在 Windows Phone 应用程式制作市集搜寻
  10. 群晖NAS设备MIB手册
  11. Halcon:多张图片合并成一张图片
  12. android https HttpsURLConnection 忽略证书
  13. 可在WPS环境中通用的vb6代码修改方法
  14. 计算机视觉-图像处理基础
  15. 学习ELMo从文本中提取特征的分步NLP指南
  16. centos7 安装docker 报错 conflicts with file from package
  17. 计算机语言space什么意思,space是什么意思
  18. openedx学习笔记
  19. Python字典的key都可以是什么
  20. J2ME jar文件编译为BlackBerry cod文件

热门文章

  1. 五邑大学、广东工业大学教务系统一键评教代码分享及技术简易剖析
  2. 【无极低码】手写一个低代码平台之二次开发Java
  3. 计算机键盘的型号,标准电脑键盘尺寸
  4. ABAQUS的第一个error【删去Job-1.lck】
  5. matlab幻方变换_Matlab入门1-幻方矩阵
  6. AMD GPU任务调度(2)—— 内核态分析
  7. [渝粤教育] 浙江工商大学 中外经典演出欣赏 参考 资料
  8. 两个IP组播综合配置示例
  9. python cox模型_基于Cox比例风险模型的失效时间预测
  10. scrapy框架之spider