1
我需要一種方法從圖像中選擇一個矩形區域(BufferedImage
到JLabel
)。
當用戶選擇一個區域時,我需要保存矩形的四個點(像素位置)。選擇圖像的區域
如何使用Java實現這個?
是否有即用型組件?
我需要一種方法從圖像中選擇一個矩形區域(BufferedImage
到JLabel
)。
當用戶選擇一個區域時,我需要保存矩形的四個點(像素位置)。選擇圖像的區域
如何使用Java實現這個?
是否有即用型組件?
要選擇BufferedImage
的區域,只是做:
BufferedImage newImage = yourImage.getSubimage(x, y, width, height);
適應代碼,並提供該參數x
,y
,width
和height
定義的矩形。
重要提示:新圖像將是鏈接到原來!如果你更新了一個,那麼下一個。
查看Javadoc瞭解更多信息。
編輯:關於將允許用戶選擇區域,你可以自己做一個簡單的組件;或搜索預先製作一個像SwingX圖書館,...
如果你選擇做一個自定義組件,這種做法將是:顯示原始圖像和要求用戶點擊在第一和秒要提取的矩形點。
您可以使用MouseListener
來保存用戶點擊的位置並將這些參數傳遞到getSubimage
。這將是一個例子:
public class RegionSelectorListener extends MouseAdapter {
final JLabel label;
public RegionSelectorListener(JLabel theLabel) {
this.label = theLabel;
theLabel.addMouseListener(this);
}
Point origin = null;
public void mouseClicked(MouseEvent event) {
if (origin == null) { //If the first corner is not set...
origin = event.getPoint(); //set it.
} else { //if the first corner is already set...
//calculate width/height substracting from origin
int width = event.getX() - origin.x;
int height = event.getY() - origin.y;
//output the results (replace this)
System.out.println("Selected X is: "+ origin.x);
System.out.println("Selected Y is: "+ origin.y);
System.out.println("Selected width is: "+ width);
System.out.println("Selected height is: "+ height);
}
}
}
要使用它:
new RegionSelectorListener(yourlabel);
感謝您的幫助,我知道如何做到這一步,但我需要知道如何捕捉來自用戶的選擇矩形點在圖像上(在GUI中)? – Radi 2011-05-01 18:35:12
@radi看我的編輯。它應該給你一個想法。如果您有任何疑問,請告訴我! – 2011-05-01 19:00:05
在此先感謝 – Radi 2011-05-01 19:23:20