5

Nodejs のプラグインを使用qr-imageして QR コードを生成すると、かなりうまく機能します。

問題は、結果イメージを ejs に表示することです。

var express = require('express');
var router = express.Router();
var qr = require('qr-image');

router.get('/', function(req, res) {
    var code = qr.image("text to show in qr", { type: 'png', ec_level: 'H', size: 10, margin: 0 });
    res.type('png');
    code.pipe(res);
    // res.render('index', { title: 'QR Page', qr: code });
});

最後の行のコメントを外すと、nodejs がクラッシュします。codeビューに変数として送信する方法は?

アップデート:

このコードは[object Object]結果ページに返されます。

var code = qr.image("text to show in qr", { type: 'png', ec_level: 'H', size: 10, margin: 0 });
res.render('index', { title: 'QR Page', qr: code });

また、 console.log(code) はこれを示しています:

{ _readableState:
   { highWaterMark: 16384,
     buffer: [],
     length: 0,
     pipes: null,
     pipesCount: 0,
     flowing: false,
     ended: false,
     endEmitted: false,
     reading: false,
     calledRead: false,
     sync: true,
     needReadable: false,
     emittedReadable: false,
     readableListening: false,
     objectMode: false,
     defaultEncoding: 'utf8',
     ranOut: false,
     awaitDrain: 0,
     readingMore: false,
     decoder: null,
     encoding: null },
  readable: true,
  domain: null,
  _events: {},
  _maxListeners: 10,
  _read: [Function] }
4

1 に答える 1

8

レンダリングされた画像をテンプレート エンジンに詰め込もうとしています。それはうまくいきません。

代わりに、画像で応答する URL を指すテンプレートに画像タグを含める必要があります。

// コメントに基づいて編集

router.get('/qr/:text', function(req,res){
   var code = qr.image(req.params.text, { type: 'png', ec_level: 'H', size: 10, margin: 0 });
   res.setHeader('Content-type', 'image/png');
   code.pipe(res);
}

次に、html テンプレートで、src が設定されたイメージ タグを作成する/qr/whatever textと、良好な状態になるはずです。

于 2014-12-15T18:36:38.073 に答える