导语
上一期文章是写的九宫格切图,都说很好看~朋友圈的九宫格也大受欢迎!
其实吧:最近女朋友要生日了,我问她要什么吧,她就说“随便”,我这一想,顿时恼火啊,说随便,但是当男朋友的也肯定不能随便买个东西撒,不然随便买了,回来就说不重视她,思来想去,最后偷偷想了这个办法!!既不是不重视,也不是随便!
这往下看:
咳咳咳......所以做了这款朋友圈的升级版九宫格抽奖~那这抽到什么送什么,完全是看个人的运气了!
点击抽奖一次:
小编点了第一张图👀
正文
原理简介:
用 Python 的 PIL 模块来批量生成九宫格图片就ok了, 很简单。
我们需要准备9张封面图片,然后这里点开之后效果也有9张搞笑表情图打底+抽到的奖品名称。
Python 图像处理实现此思路,就是在对应尺寸的底图上,找到元素对应的位置坐标,通过 PIL 模块贴上预备好的表情图,并在图片中添加对应的话术。
(1)封面图的话就是最上面那组,图片底图素材:
(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() 在给定的坐标处贴图。
from PIL import Image
# im 是背景图
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)
for i in range(1,10):
background = "pre/paper.jpg"
head = content[f'00{i}']['head']
adcontent = content[f'00{i}']['ad']
get_pic(background,head,adcontent,f"{i}",f"{i}.jpg")
print("九宫格图片生成完毕!")
效果图:这是第九组的!!哈哈哈 这组只是娱乐效果撒!可不敢被女友抽到!
**
**
总结
安啦!文章就写到这正式结束啦!源码基地:#959755565#可免费获取源码!
喜欢就点点赞吧~谢谢,你们的支持与鼓励是我最大的动力!