Чтобы выбрать область 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);