我正在尝试读取图像,并且当您使用HTML画布“ Uint8ClampedArray”时,想要得到的结果是相同的吗?var imageData = ctx.getImageData(0, 0, width, height);我找到了NPM lib 画布,但是无法安装。
因此,还有另一种不用Canvas的方法吗?
要严格回答这个问题:
因此,还有另一种不用Canvas的方法吗?
问题是,即使我们可以加载图像二进制数据,我们也需要能够解析其二进制格式以将其表示为原始像素数据(ImageData/ Uint8Array对象)。
这就是为什么canvas模块在安装时需要编译的原因:它依赖并链接到libpng,libjpeg和其他本机库。
要从Uint8Array没有画布(或本机库包装器)的文件中加载表示像素的原始数据,将需要仅在Javascript中运行的解码器。
例如,存在用于png和jpeg的解码器作为第三方库。
使用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)
使用喷墨:
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