You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Segno生成含邮件联系人信息且中心带Logo的二维码?

问题

我正在寻找可用于生成包含邮件联系人信息且中心带有Logo的二维码的库。Segno似乎颇为流行,且具备生成艺术二维码的能力,但我未能找到任何中心带Logo的简单二维码示例。
我已生成了几个包含相关邮件数据的POC二维码,效果十分理想,请问有人知道Segno是否支持在二维码中心添加Logo吗?

基础邮件二维码示例

from segno import helpers

qrcode = helpers.make_mecard(name='Doe,John', email='me@example.org', phone='+1234567')
# 部分参数支持多值,比如邮箱、电话、网址
qrcode = helpers.make_mecard(name='Doe,John', email=('me@example.org', 'another@example.org'), url=['http://www.example.org', 'https://example.org/~joe'])
qrcode.save('emailCode.svg', scale=4)
回答

Segno本身没有直接内置添加中心Logo的功能,但可以借助Python的Pillow(PIL)库实现该需求——Segno支持将二维码转换为PIL图像对象,之后就能轻松把Logo叠加到二维码中心。

具体实现步骤及示例代码如下:

  1. 用Segno生成目标MECARD二维码并转为PIL图像
  2. 加载Logo图片并调整尺寸(建议Logo边长不超过二维码的1/4,避免影响扫码识别)
  3. 计算Logo在二维码中的中心位置
  4. 叠加Logo并保存最终图像
from segno import helpers
from PIL import Image

# 生成MECARD二维码
qrcode = helpers.make_mecard(
    name='Doe,John',
    email=('me@example.org', 'another@example.org'),
    url=['http://www.example.org', 'https://example.org/~joe']
)
# 将二维码转为PIL图像,scale控制二维码大小
qr_img = qrcode.to_pil(scale=4)

# 加载并调整Logo尺寸
logo_path = 'logo.png'  # 替换为你的Logo文件路径
logo = Image.open(logo_path).convert("RGBA")
max_logo_size = min(qr_img.size) // 4  # Logo最大尺寸设为二维码边长的1/4
logo.thumbnail((max_logo_size, max_logo_size))

# 计算Logo的中心位置
qr_width, qr_height = qr_img.size
logo_width, logo_height = logo.size
pos_x = (qr_width - logo_width) // 2
pos_y = (qr_height - logo_height) // 2

# 叠加Logo到二维码中心
qr_img.paste(logo, (pos_x, pos_y), logo)

# 保存带Logo的二维码
qr_img.save('qrcode_with_logo.png')

注意事项:

  • 优先使用背景透明的Logo(如PNG格式),叠加效果更美观
  • 若需生成SVG格式的带Logo二维码,可使用svgutils等SVG编辑库,原理类似:生成SVG二维码后插入Logo元素到中心位置

内容的提问来源于stack exchange,提问作者iNoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:20:28