Node.JS将可变长度的二进制数据转换为jpeg或png吗? [英] Node.JS convert Variable-length binary data to jpeg or png?

查看:318
本文介绍了Node.JS将可变长度的二进制数据转换为jpeg或png吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何将Variable-length binary data(255216255224016747073700110010100255)转换为jpeg或png到网络浏览器?

I was wondering how to convert Variable-length binary data(255216255224016747073700110010100255) to a jpeg or png to the web browser?

示例代码:

var Connection = require('tedious').Connection;

    var config = {
        "userName": "user@server.database.windows.net",
        "password": "pswd",
        "server": "server.database.windows.net",
        "options": {
                "database": "db",
                "encrypt": true,
        }
    };

    var connection = new Connection(config);

    connection.on('connect', function(err) {
            console.log("Connected");
        }
    );

var Request = require('tedious').Request;
var result,
    resG;

    function sendResponse() {
        var vals;
            // Convert to string then array
        var resultA = result.toString().split(',');
            // Now I can loop through the data returned
        resultA.forEach(function(val, index, ar) {
            if(vals == null) {
                vals = val;
            } else {
                vals += val;
            }   
        });
        resG.writeHead(200, {'Content-Type': 'text/html', 'Content-Length': vals.length});
        //console.log(vals);
        //resG.end("<img src=\"data:image/jpg;base64," + vals + "\" />");
            // Output data returned from db as string
        resG.end("" + vals);
    }

    function executeStatement() {
         request = new Request("SELECT Photos FROM dbo.tbl WHERE FarmerFirstName='someName' AND FarmerLastName='someLastName'", function(err, rowCount) {
                if (err) {
                    console.log(err);
                } else {
                    console.log(rowCount + ' rows');
                }
            });

            request.on('row', function(columns) {
                columns.forEach(function(column) {
                    result = column.value;
                });
            });

        request.on('doneInProc', function(rowCount, more) {
                    // Got everything needed from db move on to sending a response
            sendResponse();
        });

            connection.execSql(request);
    }

var http = require('http'),
    director = require('director');

var router = new director.http.Router({
    "/": {
        get: executeStatement
    }
});

var server = http.createServer(function (req, res) { 
  // set global res var
  resG = res;
  router.dispatch(req, res, function (err) {
    if (err) {
      res.writeHead(404);
      res.end();
    }
 });
});

server.listen(80);

我正在使用乏味作为数据库连接器,并使用 director 作为路由器.

I'm using tedious for my db connector and director as my router.

推荐答案

result已经是Image的字节数组.您无需对其进行任何奇特的转换.这应该起作用.

The result is already an array of bytes for the Image. You do not need to do any fancy transformations on it. This should work.

function sendResponse() {
    resG.writeHead(200, {'Content-Type': 'image/jpeg', 'Content-Length': result.length});

    resG.end(new Buffer(result));
}

,或者如果您希望将其作为HTML页面的一部分提供,则:

or if you want to serve it as part of an HTML page, this:

function sendResponse() {
    resG.writeHead(200, {'Content-Type': 'text/html'});

    var vals = (new Buffer(result)).toString('base64')

    resG.end("<html><body>" +
        "<img src=\"data:image/jpg;base64," + vals + "\" />" +
        "</body></html>");
}

这篇关于Node.JS将可变长度的二进制数据转换为jpeg或png吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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