我希望能夠讓我的用戶選擇他們上傳的圖像中特定的多邊形(點之間有曲線的6-8頂點)區域 - 我該如何使用HTML5 & JS來做這件事?我發現的唯一庫允許純矩形選區:http://odyniec.net/projects/imgareaselect/如何使用JavaScript/jQuery選擇圖像的多邊形區域?
9
A
回答
10
有已,做你需要什麼零件庫:polyclip.js, by Zoltan Dulac您可以構建一個用戶界面,允許用戶選擇點,然後將數據反饋到庫和你'重做。
編輯:這是一個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. jquery圖像定義區域多邊形
- 2. 按多邊形區域裁剪圖像
- 3. 如何從WinForm pictureBox中的圖像裁剪多邊形區域?
- 4. 選擇圖像的區域
- 5. JQuery圖像選擇區域
- 6. 使用OpenCV將圖像變形爲另一個圖像的四邊形區域
- 7. 用Jquery選擇圖像的區域
- 8. 計算多邊形區域
- 9. GeoDjango多邊形區域
- 10. 多邊形區域計算
- 11. GGPLOT2/GIS多邊形區域
- 12. 獲取圖像特定區域的所有多邊形座標?
- 13. 合併兩個多邊形區域爲一個多邊形區域中的R
- 14. 如何選擇八度圖像的100x100像素的內心正方形區域?
- 15. 多邊形選擇
- 16. ios中使用邊長的不規則多邊形的區域
- 17. 如何使鈦App中的圖像選擇區域更大?
- 18. 帶有多邊形孔的多邊形區域內的點
- 19. 在圖像上繪製正多邊形並計算區域
- 20. GWT - 區域選擇/圖像地圖
- 21. 要選擇圖像的區域
- 22. 在android中使用邊緣檢測選擇區域後的裁剪圖像
- 23. 谷歌地圖 - 獲取區域的多邊形邊緣/附近
- 24. 使用選定區域的矩形框來裁剪圖像?
- 25. 來自區域的凸多邊形
- 26. 複雜的多邊形區域
- 27. Java中多邊形的計算區域
- 28. CSS - 選擇圖像和顯示區域
- 29. 選擇圖像中第二大區域
- 30. 從圖像中選擇特定區域
您可能必須親自編寫它,方法是在用戶單擊的點之間畫線。這不是非常困難,但有十幾行非常針對你的問題。這可能取決於你想要用你的多邊形做什麼。 –