FabricJSのキャンバスに空き領域があり、アラートが表示されていることを確認する必要があります。私はこれがキャンバス上のピクセルを検出することによって行うことができると思うが、私は考えていない。どうやってするか?FabricJSでキャンバス上の空き領域を検出する方法は?
答えて
ピクセルデータを取得するには、2Dコンテキストにアクセスする必要があります。 FabricJSでこれを行うには、StaticCanvas.getContext();
に電話する必要があります。標準のファブリックキャンバスにプロトタイプチェーンがあります。そこからFabric StaticCanvas doc
は、ピクセルデータを使用して、緑、赤のピクセル、1バイトごとをする4バイトを取得し、インデックスを計算し、する必要があり、単一のピクセルにアクセスするには
var ctx = yourCanvas.getContext(); // your canvas is the Fabric canvas
var pixelData = ctx.getImageData(0,0,ctx.canvas.width, ctx.canvas.height);
を使用して取得します青、アルファ。
pixelDataを取得したら、ピクセルを取得する機能。
// pixelData is the pixel data, x and y are the pixel location
function getPixel(pixelData,x,y){
// make sure the coordinate is in bounds
if(x < 0 || x >= pixelData.width || y < 0 || y >= pixelData.height){
return {
r : 0,
g : 0,
b : 0,
a : 0
};
}
// get the index of the pixel. Floor the x and y just in case they are not ints
var index = Math.floor(x) * 4 + Math.floor(y) * 4 * pixelData.width;
// return the pixel data
return {
r : pixelData.data[index++],
g : pixelData.data[index++],
b : pixelData.data[index++],
a : pixelData.data[index++]
};
}
これは、空の領域を見つけるのに役立ちます。アルファがゼロの場合、赤、緑、青もゼロになることに注意してください。上記の関数は非常に遅いので、あなたの問題での使用を意図したものではなく、単にpixelDataからピクセルを取得する方法と、ピクセルアドレス(インデックス)を取得する方法を示しています。
@ MarkE私は、 'rgba = 0xffffffff'レンダリングの前に、firefox、chrome、edgeでそれを試してみました。' comp = "xor" '次に、すべての白いイメージを描画し、同じピクセルを読み込みました。' rgba = 0x00000000'標準では、ゼロアルファが他のすべてのチャネルについてゼロとマッチすることが必要である。 – Blindman67
私はおそらく間違っていたことを覚えていました。チェックしてくれてありがとう:-) – markE
- 1. Webページの空き領域を検出する方法
- 2. Fabricjs - マウス移動でキャンバスを検出する方法は?
- 3. 別のFabricJSキャンバスの上にFabricJSキャンバス
- 4. Blackberry - コードからデバイス上の空き領域を見つけ出す方法
- 5. SQL Serverドライブ上の空き領域
- 6. HTML5キャンバス上の複数のクリック領域?
- 7. スイングでキャンバス上の画像の特定の領域を拡大する方法
- 8. FabricJSキャンバス、スクロールする親コンテナが子ヒット領域を移動する
- 9. 通知領域の位置を検出する方法は?
- 10. キャンバス上でsvgの色を変更する方法 - Fabricjs
- 11. lmdb:空き領域を判断する方法は?
- 12. イメージ内の最小エネルギー領域を検出する方法
- 13. キャンバスでクリック可能な領域を追加する方法
- 14. Aforge.Netの動き検出領域
- 15. 正符号の空き領域を予約する方法
- 16. RadEditor下部の空き領域を削除する方法
- 17. ブラウザの空き領域にdivをレンダリングする方法
- 18. キャンバス内の特定の領域を消去する方法
- 19. キャンバスの特定の領域を取得する方法
- 20. Herokuの空き領域
- 21. ImageButtonの空き領域
- 22. UITableViewの前に空き領域を取り除く方法は?
- 23. char変数から空き領域を削除する方法
- 24. Python3 tk、キャンバス領域のツールチップ
- 25. mysql:空き領域(innodb)
- 26. テキスト領域の角領域の空白を取り除く方法
- 27. カーブした領域でタッチイベントを検出/処理する方法は?
- 28. アンドロイド:空き領域を塗りつぶす方法
- 29. JavascriptとJqueryでクリックアンドドラッグの "キャンバス"ユーザ領域を作成する方法は?
- 30. HBaseでデータを保持する領域のリスト(空でない領域)を表示する方法
ご不明な点はあまりありません。 FabricJSは、ネイティブのhtml5キャンバスが 'getImageData'で行うようなピクセル情報を取得することはありません。基になるFabricJSキャンバス(ネイティブhtml5キャンバス)への参照を取得し、次に.getImageDataを実行する必要があります。 – markE