节点将图像URL转换为数据:使用流的图像

时间:2014-07-14 21:44:01

标签: javascript node.js express stream

我目前有一个端点,用于绕过接收任何图像URL的CORS并以data-uri格式返回内容。这种方法效果很好,但我认为使用流式解决方案效率要高得多,其中响应是根据图像请求构建的。

这是工作的非流版本:

  app.get('/api/image/convert', function (req, res) {
    // TODO: use request piping for significantly more efficient throughput
    request.get(req.query.url, function (error, response, body) {
      if (!error && response && response.statusCode >= 200 && response.statusCode < 300) {
        var data = "data:" + response.headers["content-type"] + ";base64," + new Buffer(body).toString('base64')
        res.send(data)
      } else {
        res.send((response && response.statusCode) || 500, error)
      }
    })
  })

我的问题是将request.get传递给结果会更有效吗?如果是这样,它看起来会怎么样?

谢谢!

1 个答案:

答案 0 :(得分:0)

我尝试使用谷歌地图示例,它可以正常使用

var request = require('request');
app.get('/', function(req, res){
    var url = "http://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap" +
        "&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G;%7C40.711614,-74.012318" +
        "&markers=color:red%7Ccolor:red%7Clabel:C%7C40.718217,-73.998284&sensor=false";

request.get(url).pipe(res);
});

github:request