nodejs: (网络)图片转成base64 保存网络图片到本地 本地图片转成base64

这里是https协议的(http协议改成http即可)

var https = require('https');

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



https.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 = 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

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

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

    let base64Data = base64Img.replace(/^data:image\/png;base64,/, "");
    let binaryData = new Buffer(base64Data, 'base64').toString('binary');

    require("fs").writeFile("out.png", binaryData, "binary", function (err) {
      console.log(err); // writes out file without error, but it's not a valid image
    });

  });

});

保存图片到本地

const request = require("request");
const fs = require("fs");

let url = 'https://www.baidu.com/img/flexible/logo/pc/result.png'

let filename = `test${Date.now()}.png`;

var writeStream = fs.createWriteStream("./" + filename);
var readStream = request(url)
readStream.pipe(writeStream);
readStream.on('end', function (response) {
  console.log('文件写入成功');
  writeStream.end();
});

本地图片转成base64

var fs = require("fs");
var imageData = fs.readFileSync(fileUrl); // 例:fileUrl="D:\\test\\test.bmp"
var imageBase64 = imageData.toString("base64");
 
// data:image/png;base64, png图片
// data:image/gif;base64, gif图片
// data:image/jpeg;base64, jpeg图片
var imagePrefix = "data:image/bmp;base64,";
document.getElementById('img').src = imagePrefix + imageBase64;
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值