使用Python自动生成带二维码的分享图片(基于PIL)附代码

本文介绍了如何使用Python的PIL库生成带有二维码的分享图片。通过PIL的Image, ImageFont, ImageDraw模块在内存中处理图片,利用qrcode包生成二维码,并讨论了文本对齐、图片处理及字体选择的技巧,包括处理非矩形图片的白边问题和字体index的研究。" 112344529,10078506,银河麒麟操作系统安装Node.js指南,"['操作系统', '麒麟OS', 'nodejs', '安装教程', 'Linux']
摘要由CSDN通过智能技术生成

最近做了一个需求,主要是对接一个公众号的活动部分,要求将前端传过来的相关数据生成一个带二维码的静态图片以便用户保存分享。经过一些搜索,最后决定使用Python的PIL(Pillow)包的Image, ImageFont, ImageDraw模块实现。

设计思路:由于是服务器端代码,希望图片都是在内存中,所以代码中对于存储图片都采用了BytesIO。好在Image.open()方法支持file-like的类型,所以用起来并不复杂。

随便做了一个(可以把你的设计师同事气到脑中风的)示例图,大致展示了这个项目可以提供的功能。



先放项目地址:https://github.com/HectorLI36/sharing_picture_generator

用法请见上面的GitHub里的README,本文详细说一下思路和注意事项,避免朋友们和我踩同样的坑。

下面说一下几个比较重要的模块。

1.生成二维码

这部分是相对来说比较简单的,只需要Python中的qrcode包即可。

import qrcode
qr_pil_obj = qrcode.make(url, border=0)
qr_code_pic = BytesIO()
qr_pil_obj.save(qr_code_pic, format='PNG')

参数 broder指的是二维码周围白圈的宽度,默认为4.

qrcode.make()方法返回的是一个PIL.Image对象。存成BytesIO以后,直接传到函数中就OK了。

2.设置字体对齐

PIL中ImageDraw模块的text()方法是在背景图片上用文本框的左上角定位的,但有时候我们需要文本居中,或文本的最后侧处于特定的位置,这就提出了一个问题。经过一番搜索,我决定自己算。。。

_font = ImageFont.truetype(*font_args, index
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值