一尘不染

Node.js从Web获取图像并使用base64进行编码

node.js

我正在尝试从网上获取图片并使用base64对其进行编码。

到目前为止,我基本上是:

var request = require('request');
var BufferList = require('bufferlist').BufferList;

bl = new BufferList(),

request({uri:'http://tinypng.org/images/example-shrunk-8cadd4c7.png',responseBodyStream: bl}, function (error, response, body) 
{
    if (!error && response.statusCode == 200) 
    {
        var type = response.headers["content-type"];
        var prefix = "data:" + type + ";base64,";
        var base64 = new Buffer(bl.toString(), 'binary').toString('base64');
        var data = prefix + base64;
        console.log(data);
    }
});

这似乎非常接近解决方案,但我不能完全解决它。它识别数据类型并给出输出:

data:image/png;base64

但是,缓冲区列表“ bl”似乎为空。

提前致谢!


阅读 330

收藏
2020-07-07

共1个答案

一尘不染

BufferList已过时,因为它的功能现在在Node核心中。唯一棘手的部分是将请求设置为不使用任何编码:

var request = require('request').defaults({ encoding: null });

request.get('http://tinypng.org/images/example-shrunk-8cadd4c7.png', function (error, response, body) {
    if (!error && response.statusCode == 200) {
        data = "data:" + response.headers["content-type"] + ";base64," + Buffer.from(body).toString('base64');
        console.log(data);
    }
});
2020-07-07