Node.js 节点JS画布图像数据

Node.js 节点JS画布图像数据,node.js,canvas,Node.js,Canvas,我正在尝试读取图像,当您使用HTML画布“uint8clampedaray”时,我希望得到的结果是相同的var imageData=ctx.getImageData(0,0,宽度,高度)我找到了一个NPM库,但我无法安装它 那么,有没有其他方法可以不用Canvas呢?我真的不知道我是如何让Canvas工作的。我使用pixel util设置图像数据 var pixelUtil = require('pixel-util'), Canvas = require('canvas'); var

我正在尝试读取图像,当您使用HTML画布“uint8clampedaray”时,我希望得到的结果是相同的<代码>var imageData=ctx.getImageData(0,0,宽度,高度)我找到了一个NPM库,但我无法安装它


那么,有没有其他方法可以不用Canvas呢?

我真的不知道我是如何让Canvas工作的。我使用pixel util设置图像数据

var pixelUtil = require('pixel-util'),
    Canvas = require('canvas');

var image = new Canvas.Image,

pixelUtil.createBuffer('http://127.0.0.1:8080/image/test.jpg').then(function(buffer){
    image.src = buffer;

    canvas = new Canvas(image.width, image.height);

    var ctx = canvas.getContext('2d');
    ctx.drawImage(image, 0, 0);
    runImage(ctx.getImageData(0, 0, canvas.width, canvas.height));
});

要严格回答这个问题:

那么,有没有其他不用画布的方法呢

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

这就是模块安装时需要编译的原因:它依赖于、链接到和其他本机库

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

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

解码PNG 使用:

解码JPEG 使用:


我知道canvas不是构造函数
const PNG = require('png-js');
PNG.decode('./image.png', function(pixels) {
   // Pixels is a 1d array (in rgba order) of decoded pixel data
});
const inkjet = require('inkjet');
inkjet.decode(fs.readFileSync('./image.jpg'), function(err, decoded) {
  // decoded: { width: number, height: number, data: Uint8Array }
});