如何在Node.js中将jimp对象转换为图像缓冲区?

11

因此,我使用一些库以特定方式将可计数的图像合并为单个图像。

该库使用Jimp库进行操作,最终合并后返回一个Jimp对象。就像这样:

Jimp {
  _background: 0,
  bitmap: {
    data: <Buffer 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... 2359246 more bytes>,
    width: 768,
    height: 768
  }
}
在这个连接之后,我需要将这个Jimp对象转换为node Buffer对象,而不必将图像作为文件写入磁盘并返回Buffer以在下一步中使用它。
这可能吗?我在Jimp文档中找不到任何内容。当我尝试将Jimp.bitmap.data 写入文件时,该图像会损坏...
谢谢!

缓冲区可能是原始图像数据。您需要将图像格式化为哪种格式?PNG?JPEG? - cbr
@cubrr,我需要PNG图像。请思考一下这个缓冲区是否表示每4个字节的一个像素:三个RGB值和一个alpha值。 - Roman Shmandrovskyi
https://github.com/oliver-moran/jimp/blob/master/packages/jimp/README.md#writing-to-files-and-buffers - cbr
@cubrr,没错!就是我自己找到的。谢谢! - Roman Shmandrovskyi
1个回答

24

所以,我找到了解决方法。Jimp库中有一个方法可以做到这一点。但是文档中没有一行描述它。工作的解决方案:

const Jimp = require('jimp');

const img = Jimp.read('img.png');

img.getBuffer(Jimp.MIME_PNG, (err, buffer) => {
  console.log(buffer);
});

并在控制台输出:

<Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 03 00 ... 211452 more bytes>

对我来说,那很有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接