Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选择图像的一个区域_Java_Image_User Interface - Fatal编程技术网

Java 选择图像的一个区域

Java 选择图像的一个区域,java,image,user-interface,Java,Image,User Interface,我需要一种方法从图像中选择一个矩形区域(从buffereImage到JLabel)。 当用户选择一个区域时,我需要保存矩形的四个点(像素位置) 如何使用Java实现此功能? 是否有现成的组件?要选择缓冲区图像的区域,只需执行以下操作: BufferedImage newImage = yourImage.getSubimage(x, y, width, height); 调整代码并提供参数x、y、宽度和高度,以定义矩形 重要提示:新图像将链接到原始图像!如果您更新了一个,那么另一个将随之更新

我需要一种方法从图像中选择一个矩形区域(从
buffereImage
JLabel
)。
当用户选择一个区域时,我需要保存矩形的四个点(像素位置)

如何使用Java实现此功能?

是否有现成的组件?

要选择
缓冲区图像的区域,只需执行以下操作:

BufferedImage newImage = yourImage.getSubimage(x, y, width, height);
调整代码并提供参数
x
y
宽度
高度
,以定义矩形

重要提示:新图像将链接到原始图像!如果您更新了一个,那么另一个将随之更新

有关更多信息,请参阅


编辑:关于允许用户选择区域的组件,您可以自己做一个简单的;或者在图书馆里搜索一个预先制作好的,比如

如果您选择制作自定义组件,一种方法是:显示原始图像,并要求用户在要提取的矩形的第一个第二个点上单击

您可以使用
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);

要选择
缓冲区图像的区域,只需执行以下操作:

BufferedImage newImage = yourImage.getSubimage(x, y, width, height);
调整代码并提供参数
x
y
宽度
高度
,以定义矩形

重要提示:新图像将链接到原始图像!如果您更新了一个,那么另一个将随之更新

有关更多信息,请参阅


编辑:关于允许用户选择区域的组件,您可以自己做一个简单的;或者在图书馆里搜索一个预先制作好的,比如

如果您选择制作自定义组件,一种方法是:显示原始图像,并要求用户在要提取的矩形的第一个第二个点上单击

您可以使用
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请参见我的编辑。它应该给你一个想法。如果你有任何疑问,告诉我!感谢您的帮助,我知道如何执行此步骤,但我需要知道如何从用户选择的图像(在GUI中)捕获矩形点@radi请参见我的编辑。它应该给你一个想法。如果你有任何疑问,告诉我!