首页 > 代码库 > nodejs抓取网络图片转换为base64编码的图片

nodejs抓取网络图片转换为base64编码的图片

抓取网络图片需要加载http模块

//假定这是index.js文件

var http = require(‘http‘);

var url = ‘http://p0.meituan.net/tuanpic/3df525af5a3f7fe04077567d2a6caf794904.png‘;  //一张网络图片

 

http.get(url,function(res){
  var chunks = []; //用于保存网络请求不断加载传输的缓冲数据
  var size = 0;   //保存缓冲数据的总长度

  res.on(‘data‘,function(chunk){
    chunks.push(chunk);  //在进行网络请求时,会不断接收到数据(数据不是一次性获取到的),

                //node会把接收到的数据片段逐段的保存在缓冲区(Buffer),

                //这些数据片段会形成一个个缓冲对象(即Buffer对象),

                //而Buffer数据的拼接并不能像字符串那样拼接(因为一个中文字符占三个字节),

                //如果一个数据片段携带着一个中文的两个字节,下一个数据片段携带着最后一个字节,

                //直接字符串拼接会导致乱码,为避免乱码,所以将得到缓冲数据推入到chunks数组中,

                //利用下面的node.js内置的Buffer.concat()方法进行拼接

         
    size += chunk.length;  //累加缓冲数据的长度
  });

  

  res.on(‘end‘,function(err){

    var data = http://www.mamicode.com/Buffer.concat(chunks, size);  //Buffer.concat将chunks数组中的缓冲数据拼接起来,返回一个新的Buffer对象赋值给data

    console.log(Buffer.isBuffer(data));    //可通过Buffer.isBuffer()方法判断变量是否为一个Buffer对象

    

    var base64Img = data.toString(‘base64‘);  //将Buffer对象转换为字符串并以base64编码格式显示

    console.log(base64Img);     //进入终端terminal,然后进入index.js所在的目录,在终端中输入node index.js;

                      //打印出来的就是图片的base64编码格式,如下面所示                   

  });

});

 

抓取网络图片后转换为base64编码格式,格式如下:

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

 

Question:

1:把图片转换为base64编码有什么用?

2:转换后的base64编码怎么使用?

 

Answer:

1.将图片转换为base64编码可以实现网页图片在网速不好的时候先于内容加载和减少http的请求次数来减少服务器的负担;

 

2.使用方法(以png为例),上面一大坨的编码简写为abc

  background:url("data:image/png;base64,abc")  no-repeat;

  假如转换的是其他格式的图片(如gif)则改写成background:url("data:image/gif;base64,abc")  no-repeat;

nodejs抓取网络图片转换为base64编码的图片