Node.js 节点JS画布图像数据
我正在尝试读取图像,当您使用HTML画布“uint8clampedaray”时,我希望得到的结果是相同的<代码>var imageData=ctx.getImageData(0,0,宽度,高度)代码>我找到了一个NPM库,但我无法安装它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
那么,有没有其他方法可以不用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 }
});