オプションを開くには:fabric.jsを使用すると、fabric.jsキャンバスをJSONにシリアル化できます。
だけでなく、それは(後の段階で自分の画像を編集することができることは言うまでもありません)編集機能の追加の層を提供しますが、あなたが次のことを行うことができない:
var canvas = new fabric.Canvas('c');
canvas.add(
new fabric.Rect({ top: 100, left: 100, width: 50, height: 50, fill: '#f55' }),
new fabric.Circle({ top: 140, left: 230, radius: 75, fill: 'green' }),
new fabric.Triangle({ top: 300, left: 210, width: 100, height: 100, fill: 'blue' })
);
今、あなたがしたいときこのキャンバスをシリアライズするには、ファブリックキャンバスオブジェクトのJSON.stringify
関数を呼び出します。あなたは上記の例については、以下のような何か与え
JSON.stringify(canvas);
:その状態に戻ってキャンバスをシリアライズ
{
"objects": [
{
"type": "rect",
"left": 100,
"top": 100,
"width": 50,
"height": 50,
"fill": "#f55",
"overlayFill": null,
"stroke": null,
"strokeWidth": 1,
"scaleX": 1,
"scaleY": 1,
"angle": 0,
"flipX": false,
"flipY": false,
"opacity": 1,
"selectable": true
},
...
]
}
ドは使用して逆転された:
var canvas = new fabric.Canvas('c');
canvas.loadFromJSON(yourJSONString);
追加リソース:
Kitchen Sink Demo - フリーの図面を含む機能を表示します。それが同じ場合には私のために動作し、この試してみてください
Homepage
この方法は、ユーザーがマーカーやペンツールを使って「落書き」することを許可すれば効率的でしょうか?私は、JSON配列がすべてのデータを格納するために膨大なものにならなければならないと想像しています。その場合、どちらのアプローチをよりスケーラブル/効率的にすることをお勧めしますか? – babonk
"落書き"を後の段階で編集する必要がある場合は本当に必要です。そうであれば、おそらくあなたのニーズに完全に合うでしょう。もしそうでなければ、静止画像が最も良くなるだろう。私は朝にいくつかのテストを行い、あなたに戻ってきます。 ;) – f0x
素晴らしい。人々は戻って自分のイメージを編集することができます。私は実際のPNG形式がJSONよりも効率的だと考えましたが、おそらく私は間違っています – babonk