私はアップロードした画像の特定の多角形(ポイント間の曲線を含む6〜8頂点)の範囲をユーザーに選択させたいと思っています.HTML5 & JSを使用してこれを行うにはどうすればいいですか?私が見つけた唯一のライブラリーは、純粋に長方形の選択を可能にする:http://odyniec.net/projects/imgareaselect/JavaScript/jQueryを使用して画像のポリゴン領域を選択する方法は?
9
A
答えて
10
あなたが必要なものの一部を行うライブラリが既にあります:polyclip.js, by Zoltan Dulacあなたは、あなたのライブラリにデータを供給して、ユーザーがポイントを選択することを可能にするUIを構築することができますやり直し
編集:こちらはjsFiddle demonstrationです。元の画像上の点をクリックして選択し、生成ボタンを押してクロップドバージョンを生成します。
HTML:
<div id="mainContent">
<div id="canvasDiv">
<br/>
<button id="generate" type="button">Generate
</button>
</div>
<h1>Result:</h1>
<div class="clipParent" style="float:left;">
</div>
</div>
JS:
var canvasDiv = document.getElementById('canvasDiv');
canvas = document.createElement('canvas');
canvas.setAttribute('width', 500);
canvas.setAttribute('height', 500);
canvas.setAttribute('id', 'canvas');
$(canvasDiv).prepend(canvas);
if(typeof G_vmlCanvasManager != 'undefined') {
canvas = G_vmlCanvasManager.initElement(canvas);
}
var context = canvas.getContext('2d');
var imageObj = new Image();
imageObj.onload = function() {
$(canvas).attr({width : this.width, height: this.height});
context.drawImage(imageObj,0,0);
};
imageObj.src = 'http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg';
var clickX = new Array();
var clickY = new Array();
var clickDrag = new Array();
var paint;
function addClick(x, y, dragging)
{
clickX.push(x);
clickY.push(y);
clickDrag.push(dragging);
}
function redraw(){
canvas.width = canvas.width; // Clears the canvas
context.drawImage(imageObj,0,0);
context.strokeStyle = "#df4b26";
context.lineJoin = "round";
context.lineWidth = 5;
for(var i=0; i < clickX.length; i++)
{
context.beginPath();
context.arc(clickX[i], clickY[i], 3, 0, 2 * Math.PI, false);
context.fillStyle = '#ffffff';
context.fill();
context.lineWidth = 5;
context.stroke();
}
}
$('#canvas').click(function(e){
var mouseX = e.pageX - this.offsetLeft;
var mouseY = e.pageY - this.offsetTop;
addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop);
redraw();
});
$('#generate').click(function(){
$(".clipParent").empty();
$(".clipParent").prepend('<img src="http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg" id="genimg" />');
var arr = [];
for(var i=0; i < clickX.length; i++){
arr.push(clickX[i]);
arr.push(clickY[i]);
}
$("#genimg")[0].setAttribute("data-polyclip",arr.join(", "));
clickX=[];
clickY=[];
redraw();
polyClip.init();
});
+0
大変ありがとう! – user1198133
0
あなたはキャンバスのタグに上の画像を読み込むことができ、その後、あなたはすべてのそのキャンバスにあなたが好きな描画を行うことができます。
関連する問題
- 1. 角度領域を使用して画像領域を選択
- 2. アンドロイドの選択領域で画像をぼかす方法は?
- 3. 特定の領域を選択して画像を切り抜く方法
- 4. 画面領域の選択
- 5. 選択した画面領域のrecordRTCノードモジュールを使用してデスクトップ画面ビデオを記録する方法は?
- 6. 画像内の領域を自動的に選択する方法
- 7. APIを使用してTFSで領域選択を設定する方法
- 8. クリックした領域の代わりに領域を選択する方法
- 9. 画像から領域を選択し、選択した領域をぼかしてウォーターマークを付けるにはどうしたらいいですか?
- 10. javafxで選択した画面領域のスナップショットを取る方法は?
- 11. 画面上の選択領域にテキストを入力する方法は?
- 12. tinyMCE選択した領域の選択を解除する方法
- 13. 円に使用するSVG画像の領域を計算する方法
- 14. iOSでポリゴンの物理領域を計算する方法は?
- 15. ピグレット画像の領域をPIL画像に配置する方法は?
- 16. 画像から矩形領域を切り抜く画像を使用して
- 17. 画像の選択領域にあるピクセル数を取得する
- 18. opencvのpythonで画像の領域を埋める方法は?
- 19. ファブリックオブジェクトの選択領域を増やす方法は?
- 20. アニメーション画像領域を使用するPygletでは
- 21. firemonkeyを使用して、選択した領域にビットマップを作図する方法はありますか?
- 22. Androidの画像の領域を制御する方法
- 23. bokehを使用してJupyter Notebook内のデータ領域を選択する
- 24. 非矩形の画像領域にスキマージを使用する
- 25. プロット(Python)内の領域を選択し、その領域内のデータを抽出する方法
- 26. wikiからポリゴンの領域を取得する方法mapia api
- 27. imfreehandを使用して複数のバイナリ領域を描画する方法
- 28. Rプロットの領域塗りつぶしとして画像を使用する
- 29. プログラムで領域を選択する
- 30. 描画領域に画像を描画
おそらく、ユーザーがクリックするポイント間に線を引いて、自分で書く必要があります。それは非常に難しいことではありませんが、あなたの問題に非常に特有の12行です。多角形で何をしたいかによって決まるかもしれません。 –