五星红旗国庆头像制作教程来了

开发 前端
国庆节终于来了,最近有个五星红旗半透明渐变头像很火,在抖音里、微信群里都流行起来了。

大家好,我是才哥。

国庆节终于来了,最近有个五星红旗半透明渐变头像很火,在抖音里、微信群里都流行起来了。

那么,作为python玩家,是不是也要共享一下自己的力量,用python快速制作这样的头像呢!?

来吧,展示!

1. 原理简介

我们看到这样的头像,大致是红旗透明度渐变然后覆盖在自己头像上即可。

那么,我的思路大致是先通过红旗图片获取和自己头像尺寸一样的区域,然后将这部分区域从左到右进行透明度渐变增长,然后将这张图片和头像进行融合,最终保存即可。

基于这个思路,结合之前《Python基础模块:图像处理模块@PIL(批量分类处理图片及添加水印)​》里介绍的PIL库,我们大致可以将实现步骤拆分为如下几步:

  • 读取国旗和头像照片 open
  • 截取国旗部分区域 crop
  • 从左到右透明度渐变 putpixel
  • 将区域粘贴到头像 paste​+resize
  • 保存新头像 save

既然明确了实现步骤,我们就开搞吧!

2. 实现步骤

大家记得实现准备国旗和自己头像照片到本地哦

后台 回复 955​,在国庆​文件夹领取 国旗文件,或者文末添加作者微信​ 回复 国庆 领取。

2.1. 读取图片

from PIL import Image

guoqi = Image.open('五星红旗.png')
touxiang = Image.open('头像.jpg')

图片

五星红旗

图片

头像

2.2. 截取区域

由于这里我的头像是正方形,为了方便在粘贴透明渐变国旗时更方便,需要截取正方形区域。

x,y = guoqi.size

quyu = guoqi.crop((262,100, y+62,y-100))

图片

五星红旗(正方形)

2.3. 设置透明渐变

在PIL​库中,getpixel((i, j))​表示获取(i,j)​像素点的颜色值color​,同样我们可以通过putpixel((i, j), color)​来对(i,j)像素点设置颜色。

而对应color​来说,是包含四个参数的元组(R,G,B,alpha)​,分别是RGB​值和透明度,其中透明度255表示不透明,0表示100%透明。

了解以上这些知识,我们就可以开始进行透明度渐变的操作了。

本例最简单满足需求的就是透明渐变从左到右透明度依次变高(参数值变小),考虑到从255变为0 且只能是整数,这里由于微信头像是900*900,所以我考虑的是每3个像素进行一次透明度渐变,当超过255之后则透明度为100%也就是对应参数为0。

w,h = touxiang.size

quyu = quyu.resize((w,h))

for i in range(w):
for j in range(h):
color = quyu.getpixel((i, j))
alpha = 255-i//3
if alpha < 0:
alpha=0
color = color[:-1] + (alpha, )
quyu.putpixel((i, j), color)

图片

透明渐变

2.4. 粘贴到头像并保存​

需要注意粘贴的时候要保留透明背景,否则就不好玩了,等于直接全覆盖

touxiang.paste(quyu,(0,0),quyu)
touxiang.save('五星红旗半透明渐变头像.png')

图片

五星红旗国庆头像

当然,我们还可以用别的透明渐变的方式,比如左上角到右下角之类的,具体这里不展开演示了,感兴趣的可以直接负责完整代码自己测试玩玩!

3. 完整代码

from PIL import Image


guoqi = Image.open('五星红旗.png')
touxiang = Image.open('头像.jpg')


x,y = guoqi.size

quyu = guoqi.crop((262,100, y+62,y-100))


w,h = touxiang.size

quyu = quyu.resize((w,h))

for i in range(w):
for j in range(h):
color = quyu.getpixel((i, j))
alpha = 255-i//3
if alpha < 0:
alpha=0
color = color[:-1] + (alpha, )
quyu.putpixel((i, j), color)


touxiang.paste(quyu,(0,0),quyu)
touxiang.save('五星红旗半透明渐变头像.png')

以上就是本次全部内容,如果你喜欢,希望给我点个赞和在看​哦!!更欢迎分享给更多的朋友们~

责任编辑:华轩 来源: 可以叫我才哥
相关推荐

2019-10-09 16:28:16

物联网技术移动互联网

2016-01-12 17:10:56

嫦娥玉兔美照

2013-10-31 10:34:18

飞鱼星无线云飞鱼星路由器飞鱼星

2021-11-17 21:56:19

数字化

2017-04-24 14:56:41

腾讯云

2017-09-26 16:01:11

Wi-Fi五星酒店锐捷网络

2020-02-20 19:28:15

QQ腾讯网上教学

2020-09-08 15:29:34

开发者App Store苹果

2016-03-17 18:17:15

大数据大数据沼译数据资产管理

2017-07-28 09:29:48

华为

2012-05-24 10:15:48

PHP

2022-06-15 16:11:45

网络

2011-11-10 09:45:43

WiFi
点赞
收藏

51CTO技术栈公众号