Python 实战:打造自己的微信对话生成器,让创意无限

2024-09-22
来源:网络整理

最近群里有老师问有没有好用的微信对话生成器。什么是微信对话生成器?简单来说就是模拟两个人微信聊天的截图。朋友圈里的微信交易记录,网上的恶搞对话,一些网络创意文案都可以用这个东西生成。

在百度上搜了一下,发现大部分在线制作网站要么收费,要么带水印,而且一些来历不明的小软件生成的界面已经过时了。搜了一下,网上好像没有现成的源码,所以决定自己做一个来练习一下。这次打算拆成多篇文章,分别去实现。毕竟之前做的小项目都是写在一篇文章里,我自己看还行,但是触及知识盲区的读者可能看到中间就没耐心或者看得一头雾水了。希望大家能从这个小项目的每一篇文章里学到一些东西。好,开始今天的部分吧。

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

步骤1:生成一个圆角图像作为头像。

以我的手机为例,我的截图分辨率是1080*2280,头像大小是103*103,如上图,截取的头像圆角是微信的灰色背景,为了以后方便粘贴,我们将四个角都改为透明色备用。使用如下代码实现:利用PIL的mask函数将原图和圆角图片叠加,以圆角图片作为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")

结果如下:

微信聊天截图生成器_截图聊天生成器微信怎么用_截图聊天生成器微信怎么弄

第二步:粘贴到背景色上看效果

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通道当做mask就可以了。默认png上粘贴png应该是可以的,我还特意弄成了4通道。不过语言不是我创造的,所以多写一句话就可以这么处理了。

我们发现边缘有轻微的锯齿,但只要图像放大程度不够,就可以忽略。这一点以后会改进。

好了,今天就到这里,我们来总结一下知识点:

下一期预览:“气泡背景的生成”。

分享