打开时缩放 python_用Python做一个好玩的朋友圈九宫格抽奖

news/2025/2/25 19:03:51

最近在朋友圈看到个好玩的抽奖九宫格:

fc09288c47b79f98c29f16954f6d42f6.png

随便点开一个:

8b10944cb4c84072da4760fb098a35c8.png

哈哈,笑出猪叫!这个玩法利用了朋友圈发长图会显示中间局部的设定,搞笑之余也为朋友圈广告营销贡献了新思路。

制作图的过程也不复杂,长图对应部分设计好,最后整合到一起就 OK 了,就是一张张地重复操作略显麻烦。想到这,不禁嘴角一翘、微微一笑,用 Python 的 PIL 模块来批量生成九宫格图片,不就好了?

设计思路

以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽“哈哈哈”。

Python 图像处理实现此思路,就是在对应尺寸的底图上,找到元素对应的位置坐标,通过 PIL 模块贴上预备好的表情图,并在图片中添加对应的广告语文本。图中心的数字编号我选择通过添加文本来实现,至于最下方的“哈哈哈”我是自制了一个七彩“哈哈哈”图片直接贴图

准备素材

首先在网上准备9个不同的表情包图片:

33be34bac465cd63094c551b22c0df44.png

以及七彩“哈哈哈”嘲讽图:

3dd43c1b95e22e0919ed54dfa48c2e29.png

九句不同的广告语参考文章开头朋友圈图片,我们通过 Python 字典将表情图和广告语对应到不同的九宫格图片:

content={"back_img":"paper.jpg","001":{"ad":'老板,买10盒月饼呗',"head":'001.jpg'    },"002": {"ad": '老板,买20盒月饼呗',"head": '002.jpg'    },"003": {"ad": '老板,生活不易,买50盒月饼呗',"head": '003.jpg'    },"004": {"ad": '老板,买个80盒月饼,不多',"head": '004.jpg'    },"005": {"ad": '老板,看面相,你应该买100盒月饼',"head": '005.jpg'    },"006": {"ad": '老板,恭喜你中奖了,奖品是150盒月饼',"head": '006.jpg'    },"007": {"ad": '老板,你的员工让我告诉你,他们想吃月饼了',"head": '007.jpg'    },"008": {"ad": '老板,我卖月饼,买200盒呗',"head": '008.jpg'    },"009": {"ad": '老板,不整500盒月饼送礼啊',"head": '009.jpg'    }}

PIL 图片处理

PIL: Python Imaging Library, 是功能强大 Python 图像处理库。Python 3 中通过 pip install Pillow 安装,代码文件开头通过 import 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, ImageDrawim = 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))

细节处理

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

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

    # 提前定义好生成长图的函数 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("九宫格图片生成完毕!")

最终效果

131146c45b123cffa60b2f3d1b709bcb.png

点开之后是如下长图:

fd179a1e9d8c1797b2397ca4b4f1015e.png

f7ecfb9e9f113cac47f6c942d9723ecf.png

252df96ad334e8fb81bcff91ca6938d3.png

585044680392895c63a2c8469d001b06.png

9c79c2cab628489a89fb78b4310c9826.png

4de940925bd1998865ffc95ba1fed4f4.png

a6d053aac175c64e991c36b4735c4da9.png

c216e903290e84b3a1a9d1d11aba7a78.png

b3bdb40fbdc85d23edc3376ae274d97a.png

近期热门:

千人Python知识星球重大福利,一年仅一次

学习群:

小密圈人气很高的两个实战项目

小密圈的趣味实战-微信主题

3个月还没入门Python,看这100名小密圈的同学3周学Python的杰作

需要源码和素材的同学,后台输入:【九宫格】


http://www.niftyadmin.cn/n/711944.html

相关文章

jquery html隐藏标签,jquery如何将a标签隐藏了

jquery将a标签隐藏的方法:首先创建一个示例文件;然后定义一个a标签;最后通过“$(selector).hide(speed,easing,callback)”方法将a标签隐藏即可。本教程操作环境:Windows7系统、jquery1.10.2版,该方法适用于所有品牌电…

Python-入门第四篇

Python的标准库中的os模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行。 下面列出了一些在os模块中比较…

演讲干货丨大数据的“上半场”与“下半场”

科技放大了我们的能力,但是也同时增加了我们的烦恼。我们要用数据做更精准东西的时候,会发现数据的质量非常重要。 从PC互联网到移动互联网,再到智能互联网,技术背后更多体现的是解决问题的思维方式的变革。 当大数据被广泛应用并…

html手机端页面底部弹出页面,手机端弹层弹出的内容可以滑动,底部内容不能滑动...

woshiajuana哈哈哈哈,遇到我实习期碰见的事情了,主要是网上给的建议还不行;手机body、html都设置了height:100%,overflow:hidden,是不能够阻止的给出我一个比较蛋疼的解决方案:如果你的弹出层是半透明的话,…

10.Python初窥门径(函数进阶)

Python(函数进阶) 一、函数的传参(接上期) 形参角度(一共四种,后两种) 动态参数(万能参数)* # 定义一个函数时,*所有的位置参数聚合到一个元组中 def func(*args): # *args这里是一个元组print(f"名门正派都有:{arg}") func("少林","武当","…

进行xlsx 复制一行_R语言操纵Excel进行数据透视与批处理

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图…

Java Web——Servlet的数据共享方案:ServletContext接口(全局作用域对象)

文章目录: 1.介绍 2.生命周期 3.存在的问题 4.应用举例 4.1 代码部分 4.2 运行结果部分 5.实现原理图 1.介绍 ServletContext接口来自于Servlet规范。ServletContext接口实现类由Http服务器厂商提供。ServletContext接口修饰对象被称为全局作用域对象。来…

利用Splunk做应用程序的性能分析

2019独角兽企业重金招聘Python工程师标准>>> 在我们的开发过程中,经常会需要对我们开发的程序做性能分析,有很多性能分析的工具,很多语言都提供了不同的profiling工具,这些工具很有用,提供了程序运行的原始…