在 Nodejs 中从 ArrayBuffer 创建图像

新手上路,请多包涵

我正在尝试从 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 块转换为图像?

原文由 Yaan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 604
2 个回答

您是否尝试过先将其转换为 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 Jennings 发布,翻译遵循 CC BY-SA 3.0 许可协议

花了一些时间后我得到了这个,它非常适合我。

正如@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")
            }
        });
    });
};

原文由 Sheelpriy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏