python image 灰色图_Python生成微信对话生成器(一)

本文介绍了使用Python生成微信对话头像的步骤,包括创建圆角图片并贴到背景上,讨论了PIL库的使用,如Image.open()和模板粘贴技巧,并预告了下期将制作气泡背景。
摘要由CSDN通过智能技术生成

最近群里有老师问,有没有好用的微信对话生成器。什么是微信对话生成器?说白了,就是模拟俩人微信聊天的截图呗。朋友圈的微商成交记录、网上的恶搞对话、一些网络创意文案都可以用这玩意儿生成。

上网百度了一番,大多数在线制作网站要么收费、要么有水印,一些来源不明的小软件生成的界面也早已过时。搜了一下,网上好像没有现成的源码,所以决定自己用Python做一个来练练手。这次准备拆成多篇文章,分开来实现。毕竟以前做的小项目,都写到一篇里,自己看还好,触碰到知识盲区的读者看到中间可能就没有耐心或不知所云了。希望这个小项目的每一篇,大家都能学到点知识,好了,开始今天的部分。

e2190b42a1c5adb5f673be941df37fdf.png

今天我们的任务很明确,就是生成如上对话图中的头像和气泡背景。

Step 1:生成圆角图片,准备用作头像。

a114be78ee2f154af10400f816981dba.png

以我手机为例,我的截图分辨率是1080*2280的情况下,头像大小是103*103的,如上所示,截取的头像圆角是微信的灰色背景。为了将来贴图方便,我们把四个角改成透明色备用。利用以下代码实现: 使用pil的蒙版功能,将原图和圆角图进行叠加,并将圆角图片作为mask,生成新的圆角图片。
from PIL import Image#将头像文件,缩小为105像素tx = Image.open('tx.jpg').resize((103,103)).convert("RGBA")mb = Image.open('mb.png')#模板图,即圆角图mb.paste(tx, mask=mb)#利用蒙版叠加,只有模板上非透明区下的部分显示mb.save("rtx.png")

结果如下:

0cfc6e8ef295a0d1bff100df1b4236a8.png

Step 2:贴到背景色上查看效果

bg=Image.open("bg.png").convert("RGBA")rd=Image.open("rtx.png").convert("RGBA")r,g,b,a = rd.split()#分离出透明通道,bg.paste(rd,(900,100,900+103,100+103),mask=a)#透明通道做遮罩bg.save("bg2.png")
以上代码,大家不必纠结,知道往图片上粘贴透明图片,需要分离a通道作为遮罩才能实现就好。按说png贴png就应该默认可以的,甚至我还专门convert了一下成四通道。不过语言又不是咱创的,让这样处理就多写一句呗。

b24a0434d7374a562b100ddabec552c1.png

我们发现,略有锯齿,但只要图片不放大足够倍数,可以忽略。这个后期再改进完善。

好了,今天就先实现这一点吧。我们来总结一下知识点:

  • Python常用的第三方图片处理库,安装的时候是pip install pillow,引用的时候是from PIL import里面的子模块,如Image。

  • Image.open('XXX.jpg')是创建图像对象,它可以实现裁剪、缩放、拼接等操作。如.resize((103,103))就是缩小图片到对应大小。

  • mb.paste(tx, mask=mb)是模板盖到头像上,但模板不透明区下的头像部分才显示,这部分有点类似于PS的蒙版。

  • 记住透明图片粘贴到别的图片上时,要分离出透明通道做遮罩。

下一期预告《气泡背景的生成》。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值