FabricJS 2 - 序列化帆布JSON

问题描述:

我序列化我的画布,以JSON和面临两个问题:FabricJS 2 - 序列化帆布JSON

我的画布不会被序列化的宽度和高度,但我需要这一点。

虽然普通颜色和图像作为画布背景将被序列化,但作为背景的渐变不会被序列化。我正在创建像我这样的背景渐变:

$scope.addGradient = function (left, right) { 
    var leftColor = document.getElementById('gradLeft').value; 
    var rightColor = document.getElementById('gradRight').value; 
    console.log(leftColor, rightColor); 

    var grad = new fabric.Gradient({ 
     type: 'linear', 
     coords: { 
      x1: 0, 
      y1: 0, 
      x2: canvas.width, 
      y2: canvas.height, 
     }, 
     colorStops: [{ 
      color: leftColor, 
      offset: 0, 
     }, 
      { 
       color: rightColor, 
       offset: 1, 
      } 
     ] 
    }); 
    canvas.backgroundColor = grad.toLive(canvas.contextContainer); 
    canvas.renderAll(); 
}; 

您可以像这样生成json。

GenerateCanvasJson(){ 
    return{ 
    leftColor: document.getElementById('gradLeft').value, 
    rightColor: document.getElementById('gradRight').value, 
    canvasWidth: canvas.original.width, 
    canvasHeight: canvas.original.height, 
    state: canvas.toJSON() 
    } 
} 

如果你想保存对象的namesize 你可以做到这样。

GenerateCanvasJson(){ 
    return{ 
    leftColor: document.getElementById('gradLeft').value, 
    rightColor: document.getElementById('gradRight').value, 
    canvasWidth: canvas.original.width, 
    canvasHeight: canvas.original.height, 
    state: canvas.toJSON('name', 'size') 
    } 
} 
+0

我们现在使用是这样的:“fs.writeFile(文件名,JSON.stringify(油画)” - 将你的第一个功能也strigify所有与所有属性相同的画布上的对象JSON结构?或者该函数是否需要明确指定要将哪些道具串化?谢谢! –

+0

实际上,我想输出对象的所有已定义和所有默认值以及画布的尺寸和颜色。 .. –

+0

你可以像这样保存'fs.writeFile(fileName,JSON.stringify(GenerateCanvasJson())' –