Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Nodejs中将base64解码为图像?_Javascript_Node.js_Stream_Buffer - Fatal编程技术网

Javascript 如何在Nodejs中将base64解码为图像?

Javascript 如何在Nodejs中将base64解码为图像?,javascript,node.js,stream,buffer,Javascript,Node.js,Stream,Buffer,我正在通过套接字发送一个编码为base64的图像,但解码不起作用。必须包含新映像的文件被写入base64,而不是jpg文件 编码套接字: function encode_base64(filename) { fs.readFile(path.join(__dirname, filename), function (error, data) { if (error) { throw error; } else { console.log(data);

我正在通过套接字发送一个编码为base64的图像,但解码不起作用。必须包含新映像的文件被写入base64,而不是jpg文件

编码套接字:

function encode_base64(filename) {
  fs.readFile(path.join(__dirname, filename), function (error, data) {
    if (error) {
      throw error;
    } else {
      console.log(data);
      var dataBase64 = data.toString('base64');
      console.log(dataBase64);
      

      client.write(dataBase64);
    }
  });
}

rl.on('line', (data) => {
    encode_base64('../image.jpg')

})
function base64_decode(base64str, file) {
  
   var bitmap = new Buffer(base64str, 'base64');
   
   fs.writeFileSync(file, bitmap);
   console.log('****** File created from base64 encoded string ******');
  }


client.on('data', (data) => {


    base64_decode(data,'copy.jpg')

  
});

// the first few characters in the new file 
//k1NRWuGwBGJpmHDTI9VcgOcRgIT0ftMsldCjFJ43whvppjV48NGq3eeOIeeur
解码插座:

function encode_base64(filename) {
  fs.readFile(path.join(__dirname, filename), function (error, data) {
    if (error) {
      throw error;
    } else {
      console.log(data);
      var dataBase64 = data.toString('base64');
      console.log(dataBase64);
      

      client.write(dataBase64);
    }
  });
}

rl.on('line', (data) => {
    encode_base64('../image.jpg')

})
function base64_decode(base64str, file) {
  
   var bitmap = new Buffer(base64str, 'base64');
   
   fs.writeFileSync(file, bitmap);
   console.log('****** File created from base64 encoded string ******');
  }


client.on('data', (data) => {


    base64_decode(data,'copy.jpg')

  
});

// the first few characters in the new file 
//k1NRWuGwBGJpmHDTI9VcgOcRgIT0ftMsldCjFJ43whvppjV48NGq3eeOIeeur

改变编码功能如下。另外,请记住,新缓冲区已被弃用,所以请使用Buffer.from方法

function encode_base64(filename) {
  fs.readFile(path.join(__dirname, filename), function (error, data) {
    if (error) {
      throw error;
    } else {
      //console.log(data);
      var dataBase64 = Buffer.from(data).toString('base64');
      console.log(dataBase64);
      client.write(dataBase64);
    }
  });
}
并解码如下:

function base64_decode(base64Image, file) {
  fs.writeFileSync(file,base64Image);
   console.log('******** File created from base64 encoded string ********');

}

client.on('data', (data) => {
    base64_decode(data,'copy.jpg')
});

您可以使用以下方法解码base64图像

编辑

剥去收割台

写入文件


注意:-不要忘记这里的{encoding:'base64'},您就可以开始了。

似乎解码函数base64_decode将数据作为缓冲区。 因此,新Bufferbase64str中的编码参数“base64”被忽略。 比较vs的文档

我建议先转换成字符串

函数base64\u decodebase64str,文件{ var bitmap=new Bufferbase64str.toString'base64'; fs.writeFileSyncfile,位图; console.log'*******文件是从base64编码字符串创建的********'; }
接收套接字的终端出现以下错误:TypeError:base64str.split不是base64的函数\u decode C:\Users\HP\Desktop\Node\sockets\client2.js:17:28是数据字符串吗?在client.writedataBase64上,数据是字符串终端写入了它的文件,该文件是根据base64编码的字符串创建的,但jpg文件仍然是作为base64写入的,没有图像madeCan你可以再试一次吗?我更改了解码方法代码a bitit给了我一个错误:弃用警告:由于安全和可用性问题,缓冲区已弃用,因此我将其更改为Buffer.fromdata,base64,但该文件仍然使用base64编写,而不是jpgtry,以便为您提供另一种解决方案。我已更新了代码,您可以查看它@Alihmede什么是image.png?如何访问此结果?文件中出现了奇怪的字符,甚至不是base64���正当实际上这是另一个问题,因为k1NRWuGwBGJpmHDTI9VcgOcRgIT0ftMsldCjFJ43whvppjV48NGq3eeOIeeur不是有效的base64字符串。尝试将写入客户端的前10个字符与base64_解码函数接收到的前10个字符记录在console.log中。