前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >头像加国旗引发的小思考

头像加国旗引发的小思考

作者头像
TTTEED
发布2020-07-09 14:46:30
6960
发布2020-07-09 14:46:30
举报

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

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

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

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

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

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

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

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

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

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

这里仍然故技重施:

代码语言:javascript
复制
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 老大的实现文章哈~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TTTEED 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档