2 回答

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
Fabric Image 類具有稍微復(fù)雜的恢復(fù)機(jī)制,因?yàn)樗枰跇?gòu)造函數(shù)中使用不可序列化的圖像元素。
這就是它在 FabricJS 中的實(shí)現(xiàn)方式:
/**
* Creates an instance of fabric.Image from its object representation
* @static
* @param {Object} object Object to create an instance from
* @param {Function} callback Callback to invoke when an image instance is created
*/
fabric.Image.fromObject = function(_object, callback) {
var object = fabric.util.object.clone(_object);
fabric.util.loadImage(object.src, function(img, isError) {
if (isError) {
callback && callback(null, true);
return;
}
fabric.Image.prototype._initFilters.call(object, object.filters, function(filters) {
object.filters = filters || [];
fabric.Image.prototype._initFilters.call(object, [object.resizeFilter], function(resizeFilters) {
object.resizeFilter = resizeFilters[0];
fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) {
object.clipPath = enlivedProps[0];
var image = new fabric.Image(img, object);
callback(image, false);
});
});
});
}, null, object.crossOrigin);
};
恐怕你必須復(fù)制它并將 Fabric.Image 與 Fabric.Icon 交換

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
好吧,這并不是這個(gè)問題的真正解決方案,但我找到了區(qū)分在保存和加載過程中持續(xù)存在的對象的正確方法 - 通過覆蓋其 toObject 方法來設(shè)置 Object.prototype 上的自定義屬性,如下所示:Fabric js extends toObject with?custom屬性,丟失默認(rèn)屬性?問題解決!
添加回答
舉報(bào)