Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

Node.js获取远程图片的长和宽

$
0
0

npm中的image-size模块有相关方法

image.png

想问一下各位大佬,如何改成 request 或者 request-promise 的形式,不用 http 的事件监听

Promise = require('bluebird');

let url = require('url');
let http = require('http');
let rp = require('request-promise');
let request = require('request');

let sizeOf = require('image-size');

let imgUrl = 'http://static.oschina.net/uploads/space/2016/0219/095715_HJwP_220508.png';
let options = url.parse(imgUrl);

http.get(options, function (response) {
  let chunks = [];
  response.on('data', function (chunk) {
    chunks.push(chunk);
  }).on('end', function() {
    let buffer = Buffer.concat(chunks);
    console.log('http', buffer);
    console.log(sizeOf(buffer));
  });
});

request({
  url: imgUrl,
  encoding: 'binary'
}, function(err, res, body) {
  let buffer = new Buffer(body);
  console.log('request', buffer);
});

async function test() {
  let result = await rp({url: imgUrl,
    encoding: 'binary'});
  let buffer = new Buffer(result);
  console.log('test', buffer);
}

test();

输出如下 image.png

输出特点:

  • request 和 request-promise 得到的结果(A)是一样的,和 http 的结果(B)不一样
  • A 比 B 的长
  • A 和 B 部分相似

http 和 request 请求的区别在哪里?


Viewing all articles
Browse latest Browse all 14821

Trending Articles