FabricJs在不使用canvas.toJSON()的情况下加载上一个/当前步骤

时间:2018-07-14 10:55:54

标签: fabricjs fabricjs2

我正在使用FabricJs创建在线图像编辑器。

这很简单,可以执行以下操作:缩放,旋转,flipX,撤消,重做。

我首先尝试使用toJSON和fromJSON,但是我看到当用户单击撤消按钮时,fabricjs重新加载图像,而且返回console.log的配置对象也很大,想要将所有步骤存储在数据库中。

我试图创建自己的配置对象,仅存储以下属性:


    {
        filters: FabricFilter[];
        rotation: number;
        flipX: boolean;
        position: {
            top: number,
            left: number
        };
        zoom: number;
    }

单一鼠标事件是当用户在画布中移动/调整图像时,所有其他操作均以编程方式进行。

我遇到的问题是,当用户旋转图像然后尝试应用滤镜时, 旋转丢失,或者图像超出了画布。

我在这里放置一些代码:


    setConfig(canvasEl, imageEl, config) {
        if (config.hasOwnProperty('zoom')) {
            canvasEl.setZoom(config.zoom);
        }
        if (config.hasOwnProperty('flipX')) {
            imageEl.flipX = config.flipX;
        }
        if (config.hasOwnProperty('position')) {
            imageEl.top = position.top;
            imageEl.left = position.left;
        }
        if (config.hasOwnProperty('rotation')) {
            imageEl.angle = rotation;
        }
        if (config.hasOwnProperty('filters')) {
            imageEl.filters = config.filters;
            imageEl.applyFilters();
        }
    }

问题是我不知道如何存储a
的配置 布料画布(与toJSON,loadFromJSON, 但属性较少),然后根据存储的配置更新canvas对象。

任何帮助将不胜感激。 也许我没有很好地解释我的问题,所以如果你们中的任何一个人不懂某事,我将非常乐意回答您的问题并编辑帖子。

谢谢

0 个答案:

没有答案