Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在加载fabric.image的fabric js子类并应用图像过滤器_Javascript_Canvas_Fabricjs - Fatal编程技术网

Javascript 正在加载fabric.image的fabric js子类并应用图像过滤器

Javascript 正在加载fabric.image的fabric js子类并应用图像过滤器,javascript,canvas,fabricjs,Javascript,Canvas,Fabricjs,加载保存到子类图像对象的图像过滤器时出现问题。下面是我的子类的代码: fabric.TopImage = fabric.util.createClass(fabric.Image, { type: 'top-image', initialize: function (element, options) { this.callSuper('initialize', element, options); this.set('name', 'top'

加载保存到子类图像对象的图像过滤器时出现问题。下面是我的子类的代码:

fabric.TopImage = fabric.util.createClass(fabric.Image, {

    type: 'top-image',

    initialize: function (element, options) {
        this.callSuper('initialize', element, options);
        this.set('name', 'top');
        this.set('lockUniScaling', true);
    },

    toObject: function () {
        return fabric.util.object.extend(this.callSuper('toObject'), { name: this.name });
    }

});

fabric.TopImage.fromObject = function (object, callback) {
    fabric.util.loadImage(object.src, function (img) {
        callback && callback(new fabric.TopImage(img, object));
    });
};

fabric.TopImage.async = true;
无需应用任何过滤器即可正常工作

我使用以下方法将筛选器添加到此子类的实例:

objectToFilter.filters[0] = new fabric.Image.filters.RemoveWhite({threshold: 20, distance: 20});
objectToFilter.applyFilters(canvas.renderAll.bind(canvas));
保存对象将通过类型、阈值和距离的过滤器对象

但是,加载此对象会在的all.js文件中导致错误:

Uncaught TypeError: Object #<Object> has no method 'applyTo'
uncaughttypeerror:对象#没有方法“applyTo”

由于您从未在此处调用Image.fromObject函数,因此过滤器从未初始化,无法应用。为了使筛选器按预期工作,请改用此函数:

fabric.TopImage.fromObject = function (object, callback) {
    fabric.util.loadImage(object.src, function (img) {
            var oImg = new fabric.TopImage(img);
            oImg._initConfig(object);
            oImg._initFilters(object);
            callback(oImg);
    });
};