社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

国庆中秋双节,用Python制作微信国旗头像,其实很简单。

Python绿色通道 • 2 年前 • 465 次点击  


国庆节的时候,很多地方都会升挂国旗,庆祝祖国一年一度的节日。


给自己制作国旗头像,是一件很有意义的事。微信官方就曾经举办过活动。


制作国旗头像的方法有很多,本文给大家介绍用Python制作渐变的微信国旗头像。


效果展示




渐变的国旗头像效果非常好看。


制作方式也很简单,下面介绍实现方法,可以复制本文的代码,制作属于自己的国旗头像。


图片准备



1.准备国旗图片


标准国旗图片可以到官网《中华人民共和国中央人民政府》网站下载。



声明:严禁非法使用国旗图片。国旗图片下载页面下方有《国旗法》等相关规定。


下载完成解压后会得到三张国旗图片。分别是1024、2048和4096三种像素的图片。



本文使用1024像素的图片。(用哪张都可以)



2.准备头像图片


登录自己的微信,打开个人信息,点击头像,点击右上角的三个点,将图片保存到手机,然后将图片传到电脑上。


为了不失一般性,本文使用的图片是我从网络上获取的一张600*600像素的头像图片。



准备好后,将国旗图片和头像图片拷贝到代码同一个目录下。


代码实现



先安装Python中用于处理图片的pillow库。
pip install pillow

安装完成后,使用pillow库来制作国旗头像。


只需要十几行代码就能实现。完整代码如下。


# coding=utf-8
from PIL import Image
import math

key = 3.2  # 修改key值可以调整国旗的范围,推荐2~4之间的数字,支持小数
motherland_flag = Image.open('国旗1024.png')
head_picture = Image.open('头像600.png')
# 截图国旗上的五颗五角星
flag_width, flag_height = motherland_flag.size
crop_flag = motherland_flag.crop((660, 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, (00), new_crop_flag)
# 保存自己的国旗头像
head_picture.save('国旗头像.png')

代码介绍:

  • 导入需要使用的Python库,pillow库用于对图片进行截取、大小修改、粘贴等处理。math库用于计算像素点的距离。

  • 使用Image.open()方法,读取准备好的国旗图片和头像图片到代码中。

  • 对国旗图片进行截取,获取一张正方形的图片,截取时调整截取位置,保证5颗五角星完整展示在截图中。crop()方法中传入的是一个(left, upper, right, lower)的元组,分别是截图的左、上、右、下像素位置。

  • 将正方形国旗截图设置成透明度渐变的图片。国旗图片的模式默认是RGBA,本文需要的刚好是RGBA(red,green,blue,alpha)模式的图片,RGBA模式的图片颜色值是一个长度为4的元组,我们修改不同像素点的A值即可将图片设置成渐变。

    本文是以国旗左上角为圆心,离圆心越远的像素点A值越小,像素点越透明。使用getpixel()和putpixel()两个方法来获取和重设像素点的颜色值,使用math.sqrt()计算像素点距离。
  • 将渐变图片的大小转换成和头像的大小一样,然后粘贴到图片顶层。使用resize()方法重设图片大小,使用paste()方法粘贴图片。

  • 保存图片,此时的微信头像图片上已经粘贴了透明渐变的国旗图片,微信国旗头像制作完成。


总结



本文介绍了用Python制作微信国旗头像的方法。在本文的代码中,以左上角为圆心,离圆心越远越透明,可以修改key值,调整国旗透明变化的范围。


如果需要制作其他渐变类型,如以右上角为圆心逐渐透明、从左侧向右侧逐渐透明、从上到下逐渐透明等,可以修改国旗渐变部分的代码、翻转图片等。


以上就是本文的全部内容,如果你学会了怎么用Python制作微信国旗头像,欢迎点赞、在看和分享。也可以联系我交流讨论。


太太太难了!河北承德程序员在GitHub远程给外企工作,105.8万元收入,竟全部没收!




分享

收藏

点赞

在看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/162385