python生成二维码,nodejs生成二维码,几行代码就可以实现
两种方式可以实现
python的第三方模块qrcode和MyQR的都可以快速的生成二维码,生成的二维码扫码之后可以是url链接也可以是图片或者文本。
安装方式
"""python
pip install qrcode
pip install MyQR
"""
MyQR生成二维码
from MyQR import myqr
# 图片二维码
myqr.run(
words='http://www.baidu.com',
picture='1.jpg',
colorized=True # 显示彩色图片
)
生成二维码:
from MyQR import myqr
# 动图二维码
myqr.run(
words='http://www.baidu.com',
picture='timg1.gif',
colorized=True # 显示彩色图片
)
生成二维码:
qrcode生成二维码
import qrcode
img = qrcode.make('https://www.baidu.com')
with open('test.png', 'wb') as f:
img.save(f)
生成二维码:
qrcode生成带logo的二维码
import os
import qrcode
from PIL import Image
def make_qrcode(data, save_path='./qrcode.png', border=5, image_size=(300, 300), icon_path='', factor=3.5):
# 生成二维码主体
qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_H, border=border)
qr.add_data(data) # 向二维码写入数据
qr.make()
qrcode_image = qr.make_image().resize(image_size, Image.ANTIALIAS).convert('RGBA')
if icon_path: # 在二维码中间贴上图标
icon_size = int(image_size[0] / factor), int(image_size[1] / factor)
icon = Image.open(icon_path).resize(icon_size, Image.ANTIALIAS).convert('RGBA')
icon_margin = int((image_size[0] - icon_size[0]) / 2), int((image_size[1] - icon_size[1]) / 2)
mask = Image.new('RGBA', icon_size, color='white')
qrcode_image.paste(mask, icon_margin, mask)
qrcode_image.paste(icon, icon_margin, icon)
# 保存二维码为文件
if not os.path.isdir(os.path.dirname(save_path)):
os.makedirs(os.path.dirname(save_path))
qrcode_image.save(save_path)
if __name__ == '__main__':
url = 'https://www.baidu.com'
make_qrcode(data=url, save_path='./xxxxxx.png', icon_path='logo.jpg')
生成二维码:
import qrcode
from PIL import Image
import matplotlib.pyplot as plt
def getQRcode(data, file_name):
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=5,
border=4,
)
# 添加数据
qr.add_data(data)
# 填充数据
qr.make(fit=True)
# 生成图片
img = qr.make_image(fill_color="green", back_color="white")
# 添加logo,打开logo照片
icon = Image.open("1.jpg")
# 获取图片的宽高
img_w, img_h = img.size
# 参数设置logo的大小
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)
# 得到画图的x,y坐标,居中显示
w = int((img_w - icon_w) / 2)
h = int((img_h - icon_h) / 2)
# 黏贴logo照
img.paste(icon, (w, h), mask=None)
# 终端显示图片
plt.imshow(img)
plt.show()
# 保存img
img.save(file_name)
return img
if __name__ == '__main__':
getQRcode("秋风清,秋月明,落叶聚还散,寒鸦栖复惊。相亲相见知何日,此时此夜难为情;入我相思门,知我相思苦,长相思兮长相忆,短相思兮无穷极,早知如此绊人心,何如当初莫相识.", 'my.png')
生成二维码:
nodejs生成二维码
var qr = require('qr-image'); //需要下载生成二维码依赖
var fs = require('fs'); //文件操作依赖
var code = qr.image("https://www.baidu.com", { type: 'png', size: 20 });
console.log(code);
var pic = code.pipe(fs.createWriteStream('baidu.png'));
pic.on('error', function (err) {
console.log(err);
});
pic.on('finish', function () {
console.log('二维码生成完毕');
});