python微信朋友圈刷图_10分钟用Python做个微信朋友圈抽奖九宫格
最近在朋友圈看到个好玩的抽奖九宫格:
随便点开一个:
哈哈,笑出猪叫!这个玩法利用了朋友圈发长图会显示中间局部的设定,搞笑之余也为朋友圈广告营销贡献了新思路。
制作图的过程也不复杂,长图对应部分设计好,最后整合到一起就 OK 了,就是一张张地重复操作略显麻烦。想到这,不禁嘴角一翘、微微一笑,用 Python 的 PIL 模块来批量生成九宫格图片,不就好了?
设计思路
以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽“哈哈哈”。
Python 图像处理实现此思路,就是在对应尺寸的底图上,找到元素对应的位置坐标,通过 PIL 模块贴上预备好的表情图,并在图片中添加对应的广告语文本。图中心的数字编号我选择通过添加文本来实现,至于最下方的“哈哈哈”我是自制了一个七彩“哈哈哈”图片直接贴图
准备素材
首先在网上准备9个不同的表情包图片:
以及七彩“哈哈哈”嘲讽图:
九句不同的广告语参考文章开头朋友圈图片,我们通过 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("九宫格图片生成完毕!")
代码下载
GitHub 代码及素材下载链接:https://github.com/pengfexue2/friends_ad.git百度网盘代码及素材下载:https://pan.baidu.com/s/10qqahokqPoc1KFJ7PyARxg 密码:h102
最终效果
点开之后是如下长图:
后续更新
目前准备的表情图和嘲讽图有限,后续可能会丰富下素材内容。顺便给周末立个 flag,有时间且进展顺利的话,把代码对应的可执行程序 exe 发出来。
至于不会跑 Python 代码的朋友,目前可以私信我不同的广告语,我直接发给你定制生成的图,个人微信见公众号右下角。
如果喜欢,不妨点个在看,感谢!
python微信朋友圈刷图_10分钟用Python做个微信朋友圈抽奖九宫格相关推荐
- python 30分钟_一张图30分钟快速Python入门
国外一个大牛使用一张图来讲述Python的基本概念,让你30分钟快速入门.通过该程序,可以了解快速Python语言基本的语法结构和使用方法,它的基本程序如下: 当然看不懂没关系这里还有中文版的 # - ...
- python random模块中的指令_10分钟让你掌握python编程中random模块功能使用,非常详细...
原标题:10分钟让你掌握python编程中random模块功能使用,非常详细 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可 ...
- 用python编写阴阳师自动刷图脚本
import pyautogui as sb #鼠标 import random import time# random.uniform 随机小数 def move(s,inta,intb,intc, ...
- bs4爬取的时候有两个标签相同_10分钟用Python爬取最近很火的复联4影评
<复仇者联盟4:终局之战>已经上映快三个星期了,全球票房破24亿美元,国内票房破40亿人民币. 虽然现在热度逐渐下降,但是我们还是恬不知耻地来蹭一蹭热度.上映伊始<复联4>的豆 ...
- python分类预测降低准确率_十分钟掌握python机器学习特征选择
十分钟掌握python机器学习特征选择-1.jpg (33.2 KB, 下载次数: 0) 2018-6-26 23:01 上传 在机器学习中,特征选择是实践中的一步, 帮你在所有特征中选择对结果贡献最 ...
- Python Train_出乎意料的简单!10分钟用python建立人工智能预测模型
介绍 鉴于Python在过去几年中的兴起及其简洁性,对于数据科学领域的Python学家意义重大.这篇文章会用最容易的方式引导你更快地构建第一个预测模型. 出乎意料的简单!10分钟用python进行人工 ...
- python slice函数画高维图_没想到Python还能画六维图
我们的大脑通常最多能感知三维空间,超过三维就很难想象了.尽管是三维,理解起来也很费劲,所以大多数情况下都使用二维平面. 来自维基百科 不过,我们仍然可以绘制出多维空间,今天就来用 Python 的 p ...
- 【微信小程序控制硬件⑦ 进阶篇】动起来做一个微信小程序Mqtt协议控制智能硬件的框架,为心里全栈工程师梦想浇水。
文章目录 一.前言: 二.涉及的技术点: 三.框架的运行原理: 四.框架代码流程: 4.1 主线程: 4.2 获取设备列表显示设备,以及订阅在线的设备: 4.3 点击某设备如何实现携带此设备信息到控制 ...
- python微信朋友圈刷图_用python中的itchat可视化微信朋友圈
itchat是python与微信网页版连接的api,作为测试,博主利用itchat爬取了自己的微信并进行可视化 首先登录微信,定义函数用来储存好友信息 import itchat import mat ...
最新文章
- php获取搜索框的函数,php获取搜索引擎入站关键词的函数
- Apache端口设置多域名和转发请求(虚拟域名)
- 如何搭建一个 MySQL 分布式集群
- 您必须有下列压缩分卷才能继续解压
- Android activity-alias 的使用
- Linux常用命令--文件(夹)查找之find命令
- 执行git命令时提示秘钥权限太开放‘Permissions 0644 for ‘/Users/liuml/.ssh/id_rsa_tz‘ are too open.’
- C#学习常用方法(3000)---Foreach ,in
- Codeforces D546:Soldier and Number Game
- C/C++回调方式系列之一 函数指针和函数回调模式
- 【学习强化学习】三、Q learning和Sarsa算法
- C语言:数组数据移动
- 优动漫PAINT的界面如何适配数位屏/平板?
- DRM驱动(五)之drm_atomic_state
- PYTHON使用chinese_calendar判断日期是否为节假日
- 一文了解SAP IBP是什么?
- 腾讯财报:2018年Q3腾讯净利润197.1亿元 同比增长15%
- A_A02_004 J-LINK驱动安装
- Java布局管理器实现关掉,Java布局管理器使用方法探讨
- 背包问题(Knapsack Problem)
热门文章
- linux中useradd命令的使用详解
- XTransfer技术专家康康:从普通程序员到架构师的进化之路
- U盘安装Ubuntu——关于UltraISO打开Ubuntu只有EFI文件夹的解决方法
- 为什么高质量计算机书籍几乎都是外国人写的?
- 如何1年赚100万,具体点
- 《AR与VR开发实战》——第1章AR技术简介
- JAVA服务器端发送邮件问题:Could not connect to SMTP host: smtp.qq.com, port: 465
- 5 kyu some egyptian fractions
- spark配置elasticsearch属性汇总(基于es7)
- 9 迭代器与组合模式