Кажется, это ошибка, вызванная Blend.toObject()
не сохранением своего типа класса, поэтому фильтр Blend
заканчивается без type: 'Blend'
при сериализации.Чтобы правильно десериализовать объект, Fabric анализирует его свойство type
, а когда он не находит его для сериализованного фильтра, он просто оставляет его.
Вот исправление, которое вы можете использовать для исправления этого:
fabric.Image.filters.Blend.prototype.toObject = function() {
return fabric.util.object.extend(this.callSuper('toObject'), {
color: this.color,
image: this.image,
mode: this.mode,
alpha: this.alpha
});
}
BaseFilter.prototype.toObject()
действительно устанавливает свойство type
, поэтому имеет смысл просто расширить Blend.prototype.toObject()
из возвращаемого объекта.
PS: последняя версия fabric.js 2.4+ неУ меня нет этой проблемы, так что это еще одна причина для обновления.