【问题标题】:Object's custom properties getting cleared in canvas to json对象的自定义属性在画布中被清除为 json
【发布时间】:2016-01-26 14:35:26
【问题描述】:

我有一个包含多个image objects 的画布。每个对象都有一些自定义属性。我需要将此画布作为 json 对象保存到数据库中。我使用以下代码将画布转换为 json。

canvasJson = JSON.stringify(canvas);

转换后,canvasJson 不能有任何自定义属性以及它的值。它只有默认属性和宽度、高度、不透明度等值。

我该如何解决这个问题?请提出一些正确的方法来解决这个问题...

编辑

以下是我在画布中创建图像对象的图像对象创建代码。

var imgObj = new Image();
var imgSrc = $IMAGE_URL;
imgObj.src = imgSrc;
var image = new fabric.Image(imgObj);
    image.set({
        left: 0,
        top: 0,
        angle: 0,
        padding: 0,
        cornersize: 0,
        lockMovementX: true,
        lockMovementY: true,
        lockRotation: true,
        elementId: $elementID,
        elementname: $elementName,
        elementstatus: $elementStatus,
        width: componentImageWidth,
        height: componentImageHeight
    });
    canvas.add(image);
    image.setCoords();
    canvas.renderAll();
    canvas.selection = false;
    canvas.renderAll();
    setObjectAction(image, false);

使用 JSON.stringify(canvas); 将画布转换为 json 缺少 elementIdelementnameelementstatus。但默认属性是正确的。

如何解决这个问题?

【问题讨论】:

  • 请添加您的完整代码 sn-p 或创建 JSFiddle 以详细说明。
  • 向我们展示您的画布对象。
  • 你想做什么?
  • 我在创建时添加了 elementid、elementname、elemetstatus 作为所有图像对象的自定义属性。现在我想获得我的自定义属性也是 json 对象
  • 你必须扩展 fabric.Image 类。可能这个会有所帮助。 [stackoverflow.com/questions/11272772/…

标签: javascript json canvas html5-canvas fabricjs


【解决方案1】:

您可以使用 fabric 的 canvas.toJson() 或 canvas.toDatalessJSON() 函数,并且可以将自定义属性作为参数包含,如下所示:

var json = JSON.stringify(canvas.toDatalessJSON(['elementId','elementname', 'elementstatus']));

【讨论】:

  • 加载怎么样?
猜你喜欢
  • 2023-03-12
  • 2012-08-26
  • 2015-01-18
  • 2011-07-28
  • 1970-01-01
  • 2011-06-26
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多