odoo 设备增加二维码 python生成二维码的一个有意思的问题
在odoo设备集成中根据客户要求,增加了一个二维码,想包含一些信息,用python的二维码库qrcode,qrcode是二维码生成的Python开源库。
代码如下:
ewmny = '设备:' + label.name + ',状态:' + label.zhuangtai # + ',编号:' + label.gongsibh
if label.zhuangtai:
ewmny = ewmny + ',状态:' + label.zhuangtai
else:
ewmny = ewmny + ',状态: '
if label.gongsibh:
ewmny = ewmny + ',编号:' + label.gongsibh
ewm = qrcode.make(ewmny) # 将330*330大小的二维码
# print(ewm.size)
ewm.thumbnail((80, 80))
ewmf = './tempdata/wmf.png'
ewm.save(ewmf)
生产展示后,结果用微信扫描,提示如下:
记得以前可以显示的。但微信下边有行“复制文本内容",复制后粘到其它地方,还是可以看到内容的
网上说可以加张图片,便试了下,
from PIL import Image
import qrcode, os
def create_qrcode(url, qrcodename):
qr = qrcode.QRCode(
version=1, # 设置容错率为最高
error_correction=qrcode.ERROR_CORRECT_H, # 用于控制二维码的错误纠正程度
box_size=8, # 控制二维码中每个格子的像素数,默认为10
border=1, # 二维码四周留白,包含的格子数,默认为4
)
qr.add_data(url) # QRCode.add_data(data)函数添加数据
qr.make(fit=True) # QRCode.make(fit=True)函数生成图片
img = qr.make_image()
img = img.convert("RGBA") # 二维码设为彩色
logo = Image.open("images/ewm.png") # 传gif生成的二维码也是没有动态效果的
w,h = img.size
logo_w,logo_h = logo.size
l_w = int((w - logo_w) / 2)
l_h = int((h - logo_h) / 2)
logo = logo.convert("RGBA")
img.paste(logo, (l_w, l_h), logo)
img.show()
img.save(os.getcwd() + "/images/" + qrcodename + ".png", quality=100)
def main():
url = input("请输入文本或URL:")
qrcodename = input("请输入生成二维码的名称:")
create_qrcode(url,qrcodename)
if __name__ == '__main__':
main()
用微信扫一下,识别不出来了