簡體   English   中英

如何在沒有畫布的情況下在 Node.js 中生成 QR 圖像?

[英]How can I generate QR images in Node.js without canvas?

我正在用 Node.js 為客戶建立一個網站,我需要為票務系統生成二維碼或條形碼。

我找到了一些模塊,但它們都需要像畫布這樣的安裝,以一種或另一種方式。

我在共享主機包上,我的主機不允許我安裝任何此類包,除非我升級到 VPS 或專用服務器(我沒有錢)。

你們有沒有人知道我如何在 Node.js 中實現這一點,或者我是否需要建立一個子域來在 PHP 或前端生成中生成 QR(我根本不喜歡)?

目前使用:

  • 節點.js
  • Express.js
  • Angular.js

找到的模塊:

看看這段代碼:

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

您可以使用qr-image它是一個完整的 JavaScript 解決方案,它使用 Buffers 生成以下格式的二維碼:png、svg、eps 和 pdf 格式

就我而言,我做了以下操作,請參閱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);

嘗試一下

1)npm i qrcode
2)var QRCode = require('qrcode')
3)QRCode.toString('I am a pony!',{type:'terminal'}, function (err, 
base64image) {
 console.log(base64image)
  })

這是關於如何實現這一目標的另一個建議。 您只需要獲取 QRCode 的url並將其分配給 html 中的img標簽源。 可以使用node-qrcodetoDataUrl() api 來做到這一點。

這是定義:

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

返回包含二維碼圖像表示的數據 URI。 如果提供,canvasElement 將用作畫布來生成數據 URI。

canvasElement

類型:DOMElement Canvas 繪制二維碼的位置。

text

類型:字符串|數組 要編碼的文本或描述段的對象列表。

options

type

類型: String默認值: image/png數據 URI 格式。 可能的值為: image/png, image/jpeg, image/webp

rendererOpts.quality

類型: Number默認值: 0.92一個介於01之間的數字,如果請求的類型是image/jpegimage/webp則表示圖像質量。

cb類型:Function 完成時調用的回調函數。

所以為了顯示neo QRCode,我建議你根據文檔這樣做:

const fs = require('fs');
const path = require('path');
const express = require('express');
const router = module.exports = express.Router()
const QRCode = require('qrcode')

router.get('/', (req, res) => {
    QRCode.toDataURL('Hello World !').then(url => {
        res.send(`
        <h2>QRCode Generated</h2>
        <div><img src='${url}'/></div>
      `)
    }).catch(err => {
        console.debug(err)
    })
});

編碼🖖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM