如何使用本机节点 JS HTTP 库将图像写入缓冲区

How do I write an image to buffer using native Node JS HTTP library?

本文关键字:图像 缓冲区 HTTP 何使用 本机 节点 JS      更新时间:2023-09-26

我对JavaScript和Node JS真的很陌生。我有各种想要缓冲的图像 URL。我已经尝试了请求 npm 模块,但想要一个较低级别的库来实现我想要实现的目标。

例如:http://assets.loeildelaphotographie.com/uploads/article_photo/image/128456/_Santu_Mofokeng_-_TOWNSHIPS_Shebeen_Soweto_1987.jpg

我看到很多建议使用请求模块的示例或将文件保存到磁盘的示例。但是,我找不到一个 HTTP GET 请求示例,该示例只是缓冲图像,以便我可以传递给另一个函数。它需要一个"结束"事件,所以我在另一个步骤中自信地上传缓冲的图像数据。是否有人可以提供的示例模式或"如何"?谢谢!

这是本机方式:

var http=require('http'), imageBuffer;
http.get(
  'http://www.kame.net/img/kame-anime-small.gif',
  function(res) {
    var body=new Buffer(0);
    if (res.statusCode!==200) {
      return console.error('HTTP '+res.statusCode);
    }
    res.on('data', function(chunk) {
      body=Buffer.concat([body, chunk]);
    });
    res.on('end', function() {
      imageBuffer=body;
    });
    res.on('error', function(err) {
      console.error(err);
    });
  }
);
// Small webserver serving the image at http://127.0.0.1:4567
http.createServer(function(req, res) {
  res.write(imageBuffer || 'Please reload page');
  res.end();
}).listen(4567, '127.0.0.1');

并使用请求(encoding:null用于二进制响应):

var request=require('request'), imageBuffer;
request({
  uri: 'http://www.kame.net/img/kame-anime-small.gif',
  encoding: null
}, function(err, res, body) {
  if (err) {
    return console.error(err);
  } else if (res.statusCode!==200) {
    return console.error('HTTP '+res.statusCode);
  }
  imageBuffer=body;
});
// Small webserver serving the image at http://127.0.0.1:4567
require('http').createServer(function(req, res) {
  res.write(imageBuffer || 'Please reload page');
  res.end();
}).listen(4567, '127.0.0.1');