我有包含位图信息的二进制 nodejs Buffer 对象。如何从缓冲区制作图像并将其保存到文件?
编辑:
我尝试像@herchu 所说的那样使用文件系统包,但如果我这样做:
let robot = require("robotjs")
let fs = require('fs')
let size = 200
let img = robot.screen.capture(0, 0, size, size)
let path = 'myfile.png'
let buffer = img.image
fs.open(path, 'w', function (err, fd) {
if (err) {
// Something wrong creating the file
}
fs.write(fd, buffer, 0, buffer.length, null, function (err) {
// Something wrong writing contents!
})
})
我得到
原文由 Michal 发布,翻译遵循 CC BY-SA 4.0 许可协议
注意:我正在根据您上次的编辑来编辑我的答案
如果您使用的是 Robotjs,请检查其 Bitmap 对象 是否包含 原始 像素数据的缓冲区——不是 PNG 或任何其他文件格式内容,只是彼此相邻的像素(在您的情况下正好是 200 x 200 元素)。
我没有在 Robotjs 库中找到任何以其他格式编写内容的函数(我也不知道),所以在这个答案中我使用不同的库 Jimp 来进行图像处理。
请注意,转换是通过手动遍历所有像素来完成的;这在 JS 中很慢。还有一些关于每个库如何处理其像素格式的细节,因此在循环中需要进行一些操作——从嵌入的注释中应该清楚。