Node.js-如何在视图中显示二维图像结果 [英] Nodejs - How to show qr-image result in view

查看:100
本文介绍了Node.js-如何在视图中显示二维图像结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 qr-image 插件为Node.js生成QR码,效果很好。

I use qr-image plugin for Nodejs to generate a QR code and it works pretty good.

问题是在ejs中显示结果图像。

The problem is showing result image in 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崩溃。
如何发送代码以查看为变量?

When i uncomment last line, nodejs crashs. How to send code to view as a variable?

更新:

此代码在结果页中返回 [object Object]

This code returns [object Object] in result page.

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)显示如下:

Also console.log(code) shows this:

{ _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] }


推荐答案

您正在尝试将渲染的图像填充到模板引擎中;

You're trying to stuff a rendered image into a template engine; it's not going to work.

您应该在模板中使用图像标签,该图像标签指向响应图像的URL。

You should instead have an image tag in the template that points to a URL that responds with the image.

//基于注释进行编辑

// Edit based on comment

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 /任何文本进行图像标记,您应该形状不错。

Then in your html template, make an image tag with the src set to /qr/whatever text and you should be in good shape.

这篇关于Node.js-如何在视图中显示二维图像结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆