Node JS画布图像数据

Kri*_*son 2 canvas node.js

我正在尝试读取图像,并且当您使用HTML画布“ Uint8ClampedArray”时,想要得到的结果是相同的吗?var imageData = ctx.getImageData(0, 0, width, height);我找到了NPM lib 画布,但是无法安装。

因此,还有另一种不用Canvas的方法吗?

Yoa*_*ade 5

要严格回答这个问题:

因此,还有另一种不用Canvas的方法吗?

问题是,即使我们可以加载图像二进制数据,我们也需要能够解析其二进制格式以将其表示为原始像素数据(ImageData/ Uint8Array对象)。

这就是为什么canvas模块在安装时需要编译的原因:它依赖并链接到libpnglibjpeg和其他本机库。

要从Uint8Array没有画布(或本机库包装器)的文件中加载表示像素的原始数据,将需要仅在Javascript中运行的解码器。

例如,存在用于png和jpeg的解码器作为第三方库。

解码PNG

使用png.js

const PNG = require('png-js');
PNG.decode('./image.png', function(pixels) {
   // Pixels is a 1d array (in rgba order) of decoded pixel data
});
Run Code Online (Sandbox Code Playgroud)

解码JPEG

使用喷墨

const inkjet = require('inkjet');
inkjet.decode(fs.readFileSync('./image.jpg'), function(err, decoded) {
  // decoded: { width: number, height: number, data: Uint8Array }
});
Run Code Online (Sandbox Code Playgroud)

https://github.com/gchudnov/inkjet