python生成二维码

以下转载自:点击打开链接

#二维码的中间添加一个logo图片
qr = qrcode.QRCode(
	version = 1, 		#二维码大小(最小是1,是个21X21的矩阵,version+1,矩阵边长+4)
	error_correction = qrcode.constants.ERROR_CORRECT_H,
	#纠错等级_L(<=7%),_M(<=15%,默认),_Q(<=25%),_H(<=30%)
	box_size = 10,		#控制二维码中每个格子包含的像素
	border = 0			#控制二维码与图片边界的距离,默认为4
)
qr.add_data("abcd")
qr.make(fit = True)		

img = qr.make_image()
img = img.convert("RGBA") #设置颜色空间为RGBA(RGB + Alpha(透明度))

icon = Image.open("favicon.png")
"""
此处的favicon.png需要是真正的png图片,其他格式转过来的也不行
会报ValueError: bad transparency mask 错误
具体参考:http://blog.csdn.net/heybob/article/details/46944925
"""
img_w,img_h = img.size
factor = 4
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_w:
	icon_h = size_h		#将log图像大小限定在二维码大小的1/4以内
	
icon = icon.resize((icon_w,icon_h),Image.ANTIALIAS)

w = int((img_w - icon_w) / 2 )
h = int((img_h - icon_h) / 2 )	#确定插入的log图像的位置(左上角的x,y坐标)
img.paste(icon,(w,h),icon)

img.save("img.png")
img.show()

如果3个定位角也自定义图片的话 (下面是21×21的)

import Image
import qrcode

qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=0
)
qr.add_data("abcd")
qr.make(fit=True)

img = qr.make_image()
img = img.convert("RGBA")

icon = Image.open("favicon.png")

img_w, img_h = img.size
factor = 4
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
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), icon)

# dot1
dot1 = Image.open("dot1.png")
dot1 = dot1.resize((30, 30), Image.ANTIALIAS)
img.paste(dot1, (20, 20), dot1)

# dot2
dot2 = Image.open("dot2.png")
dot2 = dot1.resize((30, 30), Image.ANTIALIAS)
img.paste(dot2, (160, 20), dot2) # 这个160随着version加1,大小加4*10, eg. 25*25是200

# dot3
dot3 = Image.open("dot3.png")
dot3 = dot1.resize((30, 30), Image.ANTIALIAS)
img.paste(dot3, (20, 160), dot3)

img.save("test_qrcodex.png")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值