微信头像加国旗
时间:2022-07-24
本文章向大家介绍微信头像加国旗,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
还记得当时刷屏朋友圈的@微信官方,给自己头像加国旗吗?本文教大家用十三行Python代码实现该功能。
一、绘制成品
先来看几个绘制成品吧,可以直接下载用作微信头像哟(已经在代码中设置图片为标准微信头像尺寸)。
1 哪吒头像加国旗
2 手托地球加国旗
3 情侣头像小女孩加国旗
4 情侣头像小男孩加国旗
5 励志文字加国旗
6 风景照加国旗
7 战长沙剧照加国旗
二、Python实现代码
微信头像加国旗的思路很简单,就是把国旗的尺寸缩小到头像的一定比例,然后粘贴到微信头像的右下角。
全量代码如下:
import os
from PIL import Image
os.chdir(r"F:微信公众号Python35_微信头像加国旗") #设置图片的存放路径
ico = Image.open("国旗1.jpg") #打开国旗的图片
head_img = Image.open("娃娃.jpg") #打开微信头像图片
ratio = head_img.width/ico.width/3 #计算国旗缩放比例
size_ico = (int(ico.width*ratio),int(ico.height*ratio)) #计算国旗的尺寸
ico = ico.resize(size_ico,Image.ANTIALIAS) #缩放国旗图片
ico_position = (head_img.width-ico.width,head_img.height-ico.height) #计算国旗粘贴的坐标
head_img.paste(ico, ico_position) #粘贴国旗
head_size = 200,200 #设置微信头像的标准尺寸
head_img = head_img.resize(head_size,Image.ANTIALIAS) #更改图片成微信头像的标准尺寸
head_img.save("head_flag5.png", quality=100, optimize=True) #高品质保存微信图形
代码解析:
ratio:把国旗图像缩小到微信头像的一定比例,可根据个人喜好调整。如喜欢国旗尺寸大一点可以把3变小。
ico.resize((width, height),Image.ANTIALIAS):把图像的尺寸调整为第一个参数对应的尺寸。
第二个参数:
Image.NEAREST :低质量
Image.BILINEAR:双线性 Image.BICUBIC :三次样条插值 Image.ANTIALIAS:高质量
ico_position:国旗粘贴的具体坐标。
head_size:微信头像的标准尺寸。
head_img.save:保存合成好的图像。为了图像更清晰,设置了quality参数和optimize参数。
可把代码中的国旗图案换成别的,合成专属于你的微信头像,感兴趣的朋友可以自己动手试一试。
参考文献
https://blog.csdn.net/sinat_41104353/article/details/85161174
https://blog.csdn.net/weixin_43945855/article/details/103485114?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-9.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-9.nonecase
- 【专知-Java Deeplearning4j深度学习教程05】无监督特征提取神器—AutoEncoder:图文+代码
- 平衡树初阶——AVL平衡二叉查找树+三大平衡树(Treap + Splay + SBT)模板【超详解】
- HDU 2689 Sort it【树状数组】
- BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】
- Vijos P1066 弱弱的战壕【多解,线段树,暴力,树状数组】
- GeetTest~下一代验证(附C#案例)
- [接口测试 - http.client篇] 17 http.client之入门级接口测试框架
- 评论JS插件~多说+畅言
- jQuery HTML5 Uploader
- 1022: [SHOI2008]小约翰的游戏John【Nim博弈,新生必做的水题】
- [接口测试 - http.client篇] 16 基于http.client之POM实战一下
- 数论部分第一节:素数与素性测试【详解】
- ProtoBuf 序列化工具组件
- C++STL vector简单使用练习1
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ruby 和 Java 的基础语法比较
- 聊聊面试-NoClassDefFoundError 和 ClassNotFoundException 区别
- 聊聊面试-int和Integer的区别
- 记一次Linux修改MySQL配置不生效的问题
- VBA解析复合文档03——解析扇区链表
- C++核心准则E.17:不要试图在所有函数中捕捉所有异常
- 《图解算法》第1章 算法简介
- 自动化篇 | 这些自动化场景,批处理脚本完全可以取代 Python!
- 《RabbitMQ》如何保证消息不被重复消费
- 算法篇:树之翻转树
- 每日一题 | 约瑟夫问题
- 编码的浪漫:完美序列化的官方评测
- 【Vulnhub】symfonos2
- PWN入门(unsafe unlink)
- tf_cnn_benchmark 显存问题