头像加国旗引发的小思考


首先,当看到朋友圈被刷屏@微信官方时,就已经意识到又是一波套路了,记得之前有在头像右下角加会员 V 符号的、还有之前圣诞节加圣诞帽的。同时看到确实很多朋友头像已经加了小国旗了,还挺好看的,必须整一个。

最高效的还是直接搜索,去百度了下微信官方加国旗(至于为啥百度,因为另一个挂了上不去了。。),得到了活动的 h5 链接,很顺利地给自己头像加了小国旗。

接下来,就是程序员思维了,它是怎么实现的呢?注意看这个活动链接的图片:

当我们登陆后,头像并不是被嵌入,而是被这个带国旗的白框直接覆盖贴上去的:

换句话说,只要我拿到了这个设计好的“国旗头像框”,将其中间掏空,缩放至头像同尺寸,直接贴到头像上就可以了。

那么问题来了,如何掏空这个头像框图片呢?我尝试电脑端去这个网页下载原图,没成功,只好从生成的图像入手。

用修图软件中的魔棒工具选中白色边框:

再进行反向选择定位到头像和国旗:

接下来将头像内容直接删除,保存成 PNG 格式,即可得到中间透明的国旗头像框了~

拿到国旗头像框,接下来就是比较容易操作的贴图,这里注意是贴中间透明的 PNG 图,之前我在赛亚人代码里用到过,当时用的 PIL 模块进行处理的。

这里仍然故技重施:

from PIL import Image# 找到头像和头像框图head = "ted.jpeg"logo = "add.png"# 打开头像source = Image.open(head)# 打开国旗头像框add = Image.open(logo)# 缩放国旗头像框mod_add = add.resize(source.size)# 贴图source.paste(mod_add,(0,0),mod_add)# 保存source.save("final.png")

在导入 PIL 模块后,以上就是全部实现代码,非常简单。要注意的就是贴图时 paste 函数里的第三个参数,就是为了保证贴图时保持 PNG 的透明性。

再回顾整个过程,貌似麻烦的反倒是用修图软件来获取这个头像国旗框。

反思

1. 写完代码,自觉得不太够看,因为人家一个链接登陆一下就能获取头像了,为什么还要麻烦兮兮地折腾这一圈?

不妨换一种思维,这其实是腾讯有这个链接,以引爆朋友圈的方式在做推广,前提是人家已经做好这个“产品”了。我们现在闲暇之余完全可以跟着学学怎么来创造一款“产品”嘛。

2. 目前体验下来,Python 代码实现起来并不省事,因为除了准备头像框,还要获取头像,这个如果想优化,可以调微信接口直接获取头像来做处理;目前推出来的 h5 链接呢,确实简单易操作,挺好。

但是,还有种思路:微信小程序。微信小程序同样可以登陆直接拿到头像,而且也是现成的平台,开发不比 h5 复杂多少,甚至可以借势推广一波,为什么没放到小程序里来做这个推广呢?

这个我暂时没想通,也打算近期尝试在小程序实现下这个功能。

以上,感谢阅读~


PS:中午写完代码时想着等晚上下班了发一下这篇文章,结果下午一瞅, Crossin 老大已经捷足先登了,不过还好他用的 opencv,没撞,哈哈

文中代码和头像框素材已经传到 GitHub,链接在置顶留言;同时也附上 Crossin 老大的实现文章哈~

发布了70 篇原创文章 · 获赞 46 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_40796925/article/details/102426615