导语

上一期文章是写的九宫格切图,都说很好看~朋友圈的九宫格也大受欢迎!

女朋友的生日礼物能随便嘛?Python制作一款出圈九宫格抽奖小程序插图
女朋友的生日礼物能随便嘛?Python制作一款出圈九宫格抽奖小程序插图1

其实吧:近女朋友要生日了,我问她要什么吧,她说随便,我这一想,顿时恼火啊,说随便,但是当男朋友的也肯定不能随便买个东西撒,不然随便买了,回来说不重视她,思来想去,后偷偷想了这个办法!!既不是不重视,也不是随便!

这往下看:

咳咳咳……所以做了这款朋友圈的升级版九宫格抽奖~那这抽到什么送什么,完全是看个人的运气了!

女朋友的生日礼物能随便嘛?Python制作一款出圈九宫格抽奖小程序插图2

点击抽奖一次:

小编点了张图

女朋友的生日礼物能随便嘛?Python制作一款出圈九宫格抽奖小程序插图3

正文

原理简介:

用 Python 的 PIL 模块来批量生成九宫格图片ok了, 很简单。

我们需要准备9张封面图片,然后这里点开之后效果也有9张搞笑表情图打底+抽到的奖品名称。

Python 图像处理实现此思路,是在对应尺寸的底图上,找到元素对应的位置坐标,通过 PIL 模块贴上预备好的表情图,并在图片中添加对应的话术。

(1)封面图的话是上面那组,图片底图素材:

女朋友的生日礼物能随便嘛?Python制作一款出圈九宫格抽奖小程序插图4

​​​​(2)九句不同惊喜语是想出来送女友的礼物,我们通过 Python 字典将表情图和话术对应到不同的九宫格图片:

content={“back_img”:“paper.jpg”,“001”:{“ad”:恭喜!迪奥口红一盒,“head”:001.jpg},“002”: {“ad”:在家吃我做的饭,“head”:002.jpg},“003”: {“ad”:生活不易,一杯奶茶,“head”:003.jpg},“004”: {“ad”:999朵玫瑰,爱你,“head”:004.jpg},“005”: {“ad”:名牌包包自己挑,“head”:005.jpg},“006”: {“ad”:烛光晚餐你挑,“head”:006.jpg},“007”: {“ad”:大牌化妆品一套,“head”:007.jpg},“008”: {“ad”:带你去逛街买衣服,“head”:008.jpg},“009”: {“ad”:爱你的心意,“head”:009.jpg} }

(3)PIL 图片处理​:

我们要用到 PIL 中贴图和向图片中写入文字。

贴图通过 Image 模块来实现,通过 Image.open() 打开图片,需要的话可以进行 resize() 缩放等处理,终通过 paste() 在给定的坐标处贴图。

fromPILimportImageim 是背景图im = Image.open(background)head_img 是要贴的表情图,先缩放统一尺寸head_img = Image.open(f”head/{head}).resize((150,150),Image.ANTIALIAS)在背景图的 75,200 坐标处贴s上表情图im.paste(head_img,(75,20))

向图片中写入文字时通过 ImageDraw 模块来实现,如果要对文字尺寸和字体做调整,需要导入 ttf 字体文件,要注意的是有些字体不支持中文。终通过PIL.ImageDraw.ImageDraw.text() 将文本写入图中指定位置。

from PIL import Image, ImageFont, ImageDraw im = Image.open(background) draw = ImageDraw.Draw(im) mark_font = ImageFont.truetype(“pre/arial.ttf”,100) draw.text((125,400),mark,font=mark_font,fill=(0,0,0))

(5)细节处理

制作九宫格图片过程中,由于内容简单,对应好元素位置直接操作好。不可控的是话的长度和内容,这里我们处理得较简单,识别广告语中的中文,来断句,每个被断开的短句占一行居中显示在图片中。

既然我们是要用代码来批量生产图片,每个图片目前可变的是表情图和话,代码中我们把完整生成一张图的过程封装成函数,这样每次给定相应参数调用该函数,即可批量生成我们需要的九宫格抽奖长图了。

​ 提前定义好生成长图的函数 get_pic(background,head,adcontent,mark,pic_name)fori inrange(1,10): background =“pre/paper.jpg”head = content[f00{i}][head] adcontent = content[f00{i}][ad] get_pic(background,head,adcontent,f“{i}”,f“{i}.jpg”)print(“九宫格图片生成完毕!”) ​

效果图:这是第九组的!!哈哈哈 这组只是娱乐效果撒!可不敢被女友抽到!

女朋友的生日礼物能随便嘛?Python制作一款出圈九宫格抽奖小程序插图5

总结

安啦!文章写到这正式结束啦!源码基地:私信小编06可免费获取源码!

喜欢点点赞吧~谢谢,你们的支持与鼓励是我大的动力!

作者 nasiapp

在线客服
官方客服
我们将24小时内回复。
12:01
您好,有任何疑问请与我们联系!

选择聊天工具: