在 Nodejs 中从 ArrayBuffer 创建图像
Create image from ArrayBuffer in Nodejs
我正在尝试从 ArrayBuffers 块创建图像文件。
all= fs.createWriteStream("out."+imgtype);
for(i=0; i<end; i++){
all.write(picarray[i]);
}
all.end();
其中 picarray
包含 ArrayBuffer 块。但是,我收到错误
TypeError: Invalid non-string/buffer chunk
。
如何将 ArrayBuffer 块转换为图像?
您是否尝试过先将其转换为 node.js.
Buffer
? (这是本机 node.js Buffer
界面,而 ArrayBuffer
是浏览器的界面,不完全支持 node.js 写入操作。
与此相关的内容应该有所帮助:
all= fs.createWriteStream("out."+imgtype);
for(i=0; i<end; i++){
var buffer = new Buffer( new Uint8Array(picarray[i]) );
all.write(buffer);
}
all.end();
花了一些时间后我得到了这个,它非常适合我。
如@Nick 所述,您必须将从浏览器收到的缓冲区数组转换为 nodejs 缓冲区。
var readWriteFile = function (req) {
var fs = require('fs');
var data = new Buffer(req);
fs.writeFile('fileName.png', data, 'binary', function (err) {
if (err) {
console.log("There was an error writing the image")
}
else {
console.log("The sheel file was written")
}
});
});
};
Array Buffer 是浏览器支持的,将不支持写入文件,我们需要转换为 NodeJs 运行时引擎的 Buffer native api。
这几行代码将创建图像。
const fs = require('fs');
let data = arrayBuffer // you image stored on arrayBuffer variable;
data = Buffer.from(data);
fs.writeFile(`Assets/test.png`, data, err => { // Assets is a folder present in your root directory
if (err) {
console.log(err);
} else {
console.log('File created successfully!');
}
});
我正在尝试从 ArrayBuffers 块创建图像文件。
all= fs.createWriteStream("out."+imgtype);
for(i=0; i<end; i++){
all.write(picarray[i]);
}
all.end();
其中 picarray
包含 ArrayBuffer 块。但是,我收到错误
TypeError: Invalid non-string/buffer chunk
。
如何将 ArrayBuffer 块转换为图像?
您是否尝试过先将其转换为 node.js.
Buffer
? (这是本机 node.js Buffer
界面,而 ArrayBuffer
是浏览器的界面,不完全支持 node.js 写入操作。
与此相关的内容应该有所帮助:
all= fs.createWriteStream("out."+imgtype);
for(i=0; i<end; i++){
var buffer = new Buffer( new Uint8Array(picarray[i]) );
all.write(buffer);
}
all.end();
花了一些时间后我得到了这个,它非常适合我。
如@Nick 所述,您必须将从浏览器收到的缓冲区数组转换为 nodejs 缓冲区。
var readWriteFile = function (req) {
var fs = require('fs');
var data = new Buffer(req);
fs.writeFile('fileName.png', data, 'binary', function (err) {
if (err) {
console.log("There was an error writing the image")
}
else {
console.log("The sheel file was written")
}
});
});
};
Array Buffer 是浏览器支持的,将不支持写入文件,我们需要转换为 NodeJs 运行时引擎的 Buffer native api。
这几行代码将创建图像。
const fs = require('fs');
let data = arrayBuffer // you image stored on arrayBuffer variable;
data = Buffer.from(data);
fs.writeFile(`Assets/test.png`, data, err => { // Assets is a folder present in your root directory
if (err) {
console.log(err);
} else {
console.log('File created successfully!');
}
});