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