如何在没有画布的情况下在Node.js中生成QR图像?

时间:2015-03-15 23:20:42

标签: javascript angularjs node.js canvas qr-code

我在Node.js中为客户建立一个网站,我需要为故障单系统生成QR码或条形码。

我发现了一些模块,但是所有这些模块都需要像画布一样安装,无论如何。

我在共享主机软件包上,我的主机不允许我安装任何此类软件包,除非我升级到VPS或专用服务器(我没有钱)。

你们有没有人知道如何在Node.js中解决这个问题,或者我是否需要建立一个子域来生成PHP或前端生成的QR(我不喜欢全部)?

目前正在使用:

  • Node.js的
  • Express.js
  • Angular.js

找到的模块:

5 个答案:

答案 0 :(得分:7)

你可以使用qr-image它是一个完整的JavaScript解决方案,使用Buffers生成以下格式的QR码:png,svg,eps和pdf格式

答案 1 :(得分:6)

查看此代码:

var qr = require('qr-image');  
var express = require('express');

var app = express();

app.get('/', function(req, res) {  
  var code = qr.image(new Date().toString(), { type: 'svg' });
  res.type('svg');
  code.pipe(res);
});

app.listen(3000);

访问npm-qr-image

答案 2 :(得分:0)

尝试

from tkinter import *

popup = Tk()
popup.wm_title("Podaci mreze")
widthTabela = 600
heightTabela = 500
def zatvaranje():
    popup.destroy()

screenw = popup.winfo_screenwidth()
screenh = popup.winfo_screenheight()
x = screenw / 2 - widthTabela / 2
y = screenh / 2 - heightTabela / 2
popup.geometry("%dx%d+%d+%d" % (widthTabela, heightTabela, x, y))


textTFrame = Frame(popup, borderwidth=1, relief="sunken")
textTabela = Text(textTFrame, width=83, height=28.4, wrap="none", borderwidth=0)
textTVSB = Scrollbar(textTFrame, orient="vertical", command=textTabela.yview)
textTHSB = Scrollbar(textTFrame, orient="horizontal", command=textTabela.xview)
textTabela.configure(yscrollcommand=textTVSB.set, xscrollcommand=textTHSB.set, font=("Arial", 10))
textTabela.config(state="disabled")
textTabela.grid(row=0, column=0, sticky="nsew")
textTVSB.grid(row=0, column=1, sticky="ns")
textTHSB.grid(row=1, column=0, sticky="ew")
textTFrame.grid(row=0, column=0)

file=open("D:\\Pycharm_Skripte\\IEEE9.txt","r")

listaPodataka = file.readlines()
textTabela.config(state="normal")
textTabela.delete('1.0', END)
for i in range(len(listaPodataka)):
    print(listaPodataka[i])
    textTabela.insert(INSERT, listaPodataka[i])
textTabela.config(state="disabled")

dugmeTabela=Button(popup, text="Close", command=zatvaranje).grid(row=2, column=0)
popup.mainloop()

答案 3 :(得分:0)

就我而言,我确实关注了以下内容,请参阅qrcode以获取更多信息。

const qrcode = require('qrcode');
const qrOption = { 
  margin : 7,
  width : 175
};
const qrString = 'QR_STRING';
const bufferImage = await qrcode.toDataURL(qrString,qrOption);
console.log(bufferImage);

答案 4 :(得分:0)

这是有关如何实现此目标的另一个建议。 您只需要获取QRCode的url并将其分配给html中的img标签源。 可以使用toDataUrl()的{​​{1}} API来做到这一点。

这是定义:

toDataURL(text, [options], [cb(error, url)])

返回包含QR码图像表示形式的数据URI。 如果提供,canvasElement将用作画布以生成数据URI。

node-qrcode

类型:使用DOMElement画布绘制QR代码的位置。

canvasElement

类型:字符串|数组要编码的文本或描述对象的列表 段。

text

options

类型:type默认值:String数据URI格式。可能的值 是:image/png

image/png, image/jpeg, image/webp

类型:rendererOpts.quality默认值:Number 0.920之间的数字表示 如果请求的类型是1image/jpeg,则图像质量。

image/webp类型:函数在完成时调用的回调函数。

因此,为了显示Neo QRCode,我建议您根据文档来这样做:

cb

编码?