简体   繁体   English

字节数组到图像Node.js中

[英]Byte array into an image Node.js

I have a long array of bytes, with numbers from 0 to 255, and I know it's an image, so how can I save it like a file? 我有一个长字节数组,数字从0到255,我知道它是一个图像,因此如何将其保存为文件? I have tried a lot of things, but not success. 我尝试了很多事情,但没有成功。
The image is created but won't open because it's damaged. 映像已创建,但由于损坏而无法打开。

File .js 文件.js

function saveImage(filename, data){
  //Data = [1,6,2,23,255,etc]
  var wstream = fs.createWriteStream(ARTWORK_PATH+filename);
   for (var i = 0; i < data.length; i++) {
       wstream.write(data[i].toString('base64'));
   }
   wstream.end();
}

Why use base64 encoding? 为什么要使用base64编码? If your image data in the data parameter as binary, you can write it. 如果您的图像数据中的data参数为二进制,则可以将其写入。

fs.writeFile(filename, data,  "binary", function(){...});

I solved it doing this! 我这样做解决了!

It was as simple as use a buffer... 就像使用缓冲区一样简单...

function saveImage(filename, data){
  var myBuffer = new Buffer(data.length);
  for (var i = 0; i < data.length; i++) {
      myBuffer[i] = data[i];
  }
  fs.writeFile(ARTWORK_PATH+filename, myBuffer, function(err) {
      if(err) {
          console.log(err);
      } else {
          console.log("The file was saved!");
      }
  });
}
saveImage("image.jpg", [0,43,255,etc]);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM