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

标签 node.js encoding express base64

我正在尝试从网络上获取图像并使用 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”似乎是空的。

提前致谢!

最佳答案

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);
    }
});

关于Node.js 从 Web 获取图像并使用 base64 进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17124053/

相关文章:

javascript - 高效查找以前的帖子 (keystoneJS)

mysql - Sequelize include 即使它是空的

javascript - 从 Promise 返回非返回函数导致警告

MySQL字符串编码存储空间

node.js - 使用 Promises 的 "interval with timeout"有什么好的模式

node.js - 如何在 Elasticsearch 中使用 multi_match 查询传递多个值以在多个记录中搜索多个字段

node.js - Visual Studio 发布按钮被禁用?

javascript - 从本地文件夹上传并显示文件

php - Preg 替换 html 撇号

c++ - ASN1C编译