五星红旗半透明渐变头像怎么做?今天我们用Python几行代码就搞定!! | 您所在的位置:网站首页 › 微信国庆渐变图像怎么弄 › 五星红旗半透明渐变头像怎么做?今天我们用Python几行代码就搞定!! |
大家好,我是才哥。 国庆节终于来了,最近有个五星红旗半透明渐变头像很火,在抖音里、微信群里都流行起来了。 那么,作为python玩家,是不是也要共享一下自己的力量,用python快速制作这样的头像呢!? 来吧,展示! 1. 原理简介我们看到这样的头像,大致是红旗透明度渐变然后覆盖在自己头像上即可。 那么,我的思路大致是先通过红旗图片获取和自己头像尺寸一样的区域,然后将这部分区域从左到右进行透明度渐变增长,然后将这张图片和头像进行融合,最终保存即可。 基于这个思路,结合之前《PIL教程》里介绍的PIL库,我们大致可以将实现步骤拆分为如下几步: 读取国旗和头像照片 open 截取国旗部分区域 crop 从左到右透明度渐变 putpixel 将区域粘贴到头像 paste+resize 保存新头像 save既然明确了实现步骤,我们就开搞吧! 2. 实现步骤大家记得实现准备国旗和自己头像照片到本地哦 后台 回复 955,在国庆文件夹领取 国旗文件,或者文末添加作者微信 回复 国庆 领取。 2.1. 读取图片 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))在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)需要注意粘贴的时候要保留透明背景,否则就不好玩了,等于直接全覆盖 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')以上就是本次全部内容,如果你喜欢,希望给我点个赞和在看哦!!更欢迎分享给更多的朋友们~ 如有疑问,可以扫码添加作者微信一起交流学习!! |
CopyRight 2018-2019 实验室设备网 版权所有 |