Javascript 我可以使用fabric.js在没有HTML的情况下获取图像数据吗?

Javascript 我可以使用fabric.js在没有HTML的情况下获取图像数据吗?,javascript,fabricjs,Javascript,Fabricjs,我正在尝试获取画布的像素缓冲区 画布的大小为:64 x 32像素,背景为白色。 我添加了一个具有大小、位置和颜色的矩形对象 最后,当我想要获取“ImageData.data”时,我没有得到正确的值 尝试使用此选项时: let canvasEl = canvas.toCanvasElement(); 我收到一条错误消息,.tocanvassement不存在 这是示例代码: import 'reflect-metadata'; import { fabric } from 'fabric'; d

我正在尝试获取画布的像素缓冲区

画布的大小为:64 x 32像素,背景为白色。 我添加了一个具有大小、位置和颜色的矩形对象

最后,当我想要获取“ImageData.data”时,我没有得到正确的值

尝试使用此选项时:

let canvasEl = canvas.toCanvasElement();
我收到一条错误消息,
.tocanvassement
不存在

这是示例代码:

import 'reflect-metadata';
import { fabric } from 'fabric';

describe('Canvas Manipulation', () => {
    describe('Canvas', () => {
        it('Should create canvas with one rectangle field in black and white', () => {
            let canvas = new fabric.Canvas('c');

            // Size of the canvas (64x32 pixels)
            canvas.width = 64;
            canvas.height = 32;
            canvas.backgroundColor = 'white';

            // Create a rectangle with angle=45
            let rect = new fabric.Rect({
                left: 16,
                top: 8,
                fill: 'black',
                width: 16,
                height: 16,
                angle: 45
            });

            canvas.add(rect);

            // You can use fabricJS to generate a B / W or color image of 32x64 and export it as a canvas element.
            let canvasEl = canvas.toCanvasElement();

            // Once you get the canvas element, you can get the imageData from it.
            var imageData = canvasEl.getContext('2d').getImageData(0, 0, canvasEl.width, canvasEl.height);

            // Then you can loop over the image data and build a 1 bit buffer.
            var data = imageData.data;
            var myBuffer = new Array(data.length / 4);

            for (var i = 0; i < data.length; i += 4) {
                myBuffer[i / 4] = data[1] > 128 ? 1 : 0;
            }
        });
    });
});
导入“反映元数据”;
从“fabric”导入{fabric};
描述('画布操作',()=>{
描述('Canvas',()=>{
它('应该用一个黑白矩形字段创建画布',()=>{
让canvas=newfabric.canvas('c');
//画布的大小(64x32像素)
画布宽度=64;
高度=32;
canvas.backgroundColor='白色';
//创建角度为45的矩形
设rect=new fabric.rect({
左:16,
前8名,
填充:“黑色”,
宽度:16,
身高:16,
角度:45
});
canvas.add(rect);
//您可以使用fabricJS生成32x64的黑白或彩色图像,并将其导出为画布元素。
让canvasEl=canvas.toCanvasElement();
//一旦获得canvas元素,就可以从中获得imageData。
var imageData=canvasEl.getContext('2d').getImageData(0,0,canvasEl.width,canvasEl.height);
//然后,您可以在图像数据上循环并构建一个1位缓冲区。
var数据=imageData.data;
var myBuffer=新数组(data.length/4);
对于(变量i=0;i128?1:0;
}
});
});
});
致以最诚挚的问候。

根据fabric.js只是HTML画布元素的包装。最后,浏览器将完成图形的绘制

如果没有浏览器在DOM中创建的HTML画布元素,则无法使用它

let canvas = new fabric.Canvas('c');
'c'
必须是DOM中可用的HTML画布元素的ID

let canvas = new fabric.Canvas('c');
因此,在node.js中运行的测试不会以这种方式工作。

根据fabric.js只是HTML画布元素的包装。最后,浏览器将完成图形的绘制

如果没有浏览器在DOM中创建的HTML画布元素,则无法使用它

let canvas = new fabric.Canvas('c');
'c'
必须是DOM中可用的HTML画布元素的ID

let canvas = new fabric.Canvas('c');

因此,在node.js中运行的测试将不会以这种方式工作。

您使用的是什么版本的fabric?“fabric”:“4.1.0”首先,我将fabricjs javascript用于typescript项目中可能是.d.ts缺失或不是最新的。其次,我没有使用任何html页面来呈现画布。我只是在创建对象,对它们进行分组,监听事件,最后通过处理提取位图数组,发送到LCD显示器。向你问好但是你是在浏览器中运行吗?亲爱的,一点也不。我的库只使用了一个typescript文件。最佳评价您使用的是哪个版本的fabric?“fabric”:“4.1.0”首先,我正在将fabricjs javascript用于一个typescript项目中可能是.d.ts缺失或不是最新的。其次,我没有使用任何html页面来呈现画布。我只是在创建对象,对它们进行分组,监听事件,最后通过处理提取位图数组,发送到LCD显示器。向你问好但是你是在浏览器中运行吗?亲爱的,一点也不。我的库只使用了一个typescript文件。最后,我得到了fabricjs存储库所有者的确认。最后,我得到了fabricjs存储库所有者的确认。