导语
上一期文章是写的九宫格切图,都说很好看~朋友圈的九宫格也大受欢迎!
其实吧:近女朋友要生日了,我问她要什么吧,她说随便,我这一想,顿时恼火啊,说随便,但是当男朋友的也肯定不能随便买个东西撒,不然随便买了,回来说不重视她,思来想去,后偷偷想了这个办法!!既不是不重视,也不是随便!
这往下看:
咳咳咳……所以做了这款朋友圈的升级版九宫格抽奖~那这抽到什么送什么,完全是看个人的运气了!
点击抽奖一次:
小编点了张图
正文
原理简介:
用 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() 在给定的坐标处贴图。
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(“九宫格图片生成完毕!”) 效果图:这是第九组的!!哈哈哈 这组只是娱乐效果撒!可不敢被女友抽到!
总结
安啦!文章写到这正式结束啦!源码基地:私信小编06可免费获取源码!
喜欢点点赞吧~谢谢,你们的支持与鼓励是我大的动力!