python3生成二维码中间带logo,有底图,可自定义文字

简介: python3生成二维码中间带logo,有底图,可自定义文字

效果:


image.png


qrcode_result.png
代码:
#!/user/bin/Python3
"""
@Lanson
@2019-11-02
"""
"""
需要安装的包:
pip install pillow
    pip install numpy
    pip install imageio
    pip install qrcode
    pip install matplotlib
    pip install myqr
python版本:3.7+
"""
import qrcode
from PIL import Image
import matplotlib.pyplot as plt
from PIL import ImageDraw
from PIL import ImageFont
'''
【红色】:red 【橙色】:orange 【黄色】:yellow 【绿】:green 【 蓝】:blue【紫】:purple 
【灰色】:gray 【白色】:white 【粉红色】:pink 【黑色】:black【墨绿色】:dark green 【橙红色】:orange-red
'''
def getQRcode(strs, name):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=2,
    )
    # 添加数据
    qr.add_data(strs)
    # 填充数据
    qr.make(fit=True)
    # 生成图片
    img = qr.make_image(fill_color="black", back_color="white")
    img = img.convert("CMYK")  # RGBA
    # 添加logo
    icon = Image.open("logo.jpg")
    # 获取图片的宽高
    img_w, img_h = img.size
    factor = 6
    size_w = int(img_w / factor)
    size_h = int(img_h / factor)
    icon_w, icon_h = icon.size
    if icon_w > size_w:
        icon_w = size_w
    if icon_h > size_h:
        icon_h = size_h
    # 重新设置logo的尺寸
    icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
    w = int((img_w - icon_w) / 2)
    h = int((img_h - icon_h) / 2)
    img.paste(icon, (w, h), None)
    # 显示图片
    # plt.imshow(img)
    # plt.show()
    img = img.convert('RGB')
    img.save(name)
    return img
def info(name,body,num):
    getQRcode(body, name)
    oriImg = Image.open("ditu.jpg")
    oriImg2 = Image.open(name)
    oriImg2 = oriImg2.resize((285, 290))#设置二维码大小
    oriImg.paste(oriImg2, (100, 95))#将二维码放在底图上
    draw = ImageDraw.Draw(oriImg)
    font = ImageFont.truetype('AdobeGothicStd-Bold.otf', 40)#设置字体
    draw.text((100, 425), '博主:'+num, (50, 51, 51), font=font)#把字添加到图片上
    oriImg = oriImg.convert('RGB')
    oriImg.save(name)
if __name__ == '__main__':
    info("qrcode_result.png","https://blog.csdn.net/xiaoweite1","Lansonli")
    print("自定义二维码生成成功!!!")


参数说明


image.png


image.png


image.png


ditu.jpg


image.png


logo.jpg


文章所用图片说明


logo.jpg 显示在二维码中心的图(959,959)

ditu.jpg 图片底图 (475,489)


目录
相关文章
|
15天前
|
Python
探索Python中的魔法方法:打造你自己的自定义对象
【8月更文挑战第29天】在Python的世界里,魔法方法如同神秘的咒语,它们赋予了对象超常的能力。本文将带你一探究竟,学习如何通过魔法方法来定制你的对象行为,让你的代码更具魔力。
36 5
|
29天前
|
前端开发 Python
使用Python+openpyxl实现导出自定义样式的Excel文件
本文介绍了如何使用Python的openpyxl库导出具有自定义样式的Excel文件,包括设置字体、对齐方式、行列宽高、边框和填充等样式,并提供了完整的示例代码和运行效果截图。
26 1
使用Python+openpyxl实现导出自定义样式的Excel文件
|
16天前
|
机器学习/深度学习 人工智能 文字识别
轻松识别文字,这款Python OCR库支持超过80种语言
轻松识别文字,这款Python OCR库支持超过80种语言
|
13天前
|
UED Python
探索Python中的魔法方法:打造自定义字符串表示
【8月更文挑战第31天】在Python的世界里,魔法方法是那些以双下划线开头和结尾的特殊方法,它们为类提供了丰富的功能。本文将带你走进这些魔法方法的背后,特别是__str__和__repr__,揭示如何通过它们来定制我们的对象在被打印或转换为字符串时的外观。我们将从基础用法开始,逐步深入到高级技巧,包括继承与重写,最终实现一个优雅的字符串表示方案。准备好了吗?让我们开始这段代码之旅吧!
|
16天前
|
SQL Shell API
python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API
python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API
|
29天前
|
Linux UED iOS开发
Python colorama 设置控制台、命令行输出彩色文字
Python colorama 设置控制台、命令行输出彩色文字
21 0
|
1月前
|
搜索推荐 Python
一行代码教你使用Python制作炫酷二维码
一行代码教你使用Python制作炫酷二维码
13 0
|
1月前
|
Python
python 协程 自定义互斥锁
【8月更文挑战第6天】这段代码展示了如何在Python的异步编程中自定义一个互斥锁(`CustomMutex`类)。该类通过`asyncio.Lock`实现,并提供`acquire`和`release`方法来控制锁的获取与释放。示例还包含了使用此自定义锁的场景:两个任务(`task1`和`task2`)尝试按序获取锁执行操作,直观地演示了互斥锁的作用。这有助于理解Python协程中互斥锁的自定义实现及其基本用法。
|
2月前
|
Python
Python模拟火焰文字效果:炫酷的火焰字动效
Python模拟火焰文字效果:炫酷的火焰字动效
26 1
|
2月前
|
监控 安全 数据库
逆天改命!用自定义上下文管理器,让你的Python代码效率飙升
【7月更文挑战第7天】Python上下文管理器简化资源管理,通过自定义实现优雅控制。使用with语句自动执行资源获取和释放,确保异常安全。例如,FileContextManager类通过__enter__打开文件,__exit__关闭并处理异常。自定义上下文管理器可封装重复逻辑,增强功能如日志和监控,提升代码效率与质量。利用这一工具,代码更简洁、高效且易于维护。**
27 1