サブクラス化された画像オブジェクトに保存されている画像フィルターをロードする際に問題があります。これが私のサブクラスのコードです:
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'