Java 获取大屏幕快照中小屏幕快照位置的坐标

Java 获取大屏幕快照中小屏幕快照位置的坐标,java,location,screenshot,image,coordinate,Java,Location,Screenshot,Image,Coordinate,例如,我正在对桌面的一小部分进行截屏(假设截屏时无法保存坐标)。接下来,拍摄全屏截图。如何在大屏幕快照中找到小屏幕快照的位置 这在Java中可能吗 public void RobotScreenCoordinateFinder() { Robot robot = new Robot(); robot.createScreenCapture(screenRect); } 我的想法是使用这个: BufferedImage screen=robot.createScreenCapt

例如,我正在对桌面的一小部分进行截屏(假设截屏时无法保存坐标)。接下来,拍摄全屏截图。如何在大屏幕快照中找到小屏幕快照的位置

这在Java中可能吗

public void RobotScreenCoordinateFinder()
{
    Robot robot = new Robot();

    robot.createScreenCapture(screenRect);
}

我的想法是使用这个:

BufferedImage screen=robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));c
BufferedImage capture=robot.createScreenCapture(screenRect);//assuming that screenRect is your capture
boolean screenMatches=false;
int screenX=0;
int screenY=0;
for(int i=0;i<screen.getWidth()-capture.getWidth();i++)
{
    for(int j=0;j<screen.getHeight()-capture.getHeight();j++)
    {
        boolean matches=true;
        for(int x=0;x<capture.getWidth();x++)
        {
            for(int y=0;y<capture.getHeight();y++)
            {
                if(screen.getRGB(i+x,j+y)!=capture.getRGB(x,y))
                {
                    matches=false;
                    break;
                }
            }
            if(!matches)break;
         }
         if(matches)
         {
             screenMatches=true;
             screenX=i;
             screenY=j;
             break;
         }
    }
    if(screenMatches)break;
}
//now if the capture is in the screen, screenMatches is true and the coordinate of the left up corner is stored in screenX and screenY
if(screenMatches)
{
    System.out.println("Found match with coordinates "+screenX+","+screenY);
}
buffereImage screen=robot.createScreenCapture(新矩形(Toolkit.getDefaultToolkit().getScreenSize());C
BuffereImage capture=robot.createScreenCapture(screenRect)//假设screenRect是您的捕获
布尔屏幕匹配=假;
int screenX=0;
int-screenY=0;

对于(int i=0;i我的想法是使用:

BufferedImage screen=robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));c
BufferedImage capture=robot.createScreenCapture(screenRect);//assuming that screenRect is your capture
boolean screenMatches=false;
int screenX=0;
int screenY=0;
for(int i=0;i<screen.getWidth()-capture.getWidth();i++)
{
    for(int j=0;j<screen.getHeight()-capture.getHeight();j++)
    {
        boolean matches=true;
        for(int x=0;x<capture.getWidth();x++)
        {
            for(int y=0;y<capture.getHeight();y++)
            {
                if(screen.getRGB(i+x,j+y)!=capture.getRGB(x,y))
                {
                    matches=false;
                    break;
                }
            }
            if(!matches)break;
         }
         if(matches)
         {
             screenMatches=true;
             screenX=i;
             screenY=j;
             break;
         }
    }
    if(screenMatches)break;
}
//now if the capture is in the screen, screenMatches is true and the coordinate of the left up corner is stored in screenX and screenY
if(screenMatches)
{
    System.out.println("Found match with coordinates "+screenX+","+screenY);
}
buffereImage screen=robot.createScreenCapture(新矩形(Toolkit.getDefaultToolkit().getScreenSize());c
BuffereImage capture=robot.createScreenCapture(screenRect);//假设screenRect是您的捕获
布尔屏幕匹配=假;
int screenX=0;
int-screenY=0;

对于(int i=0;我了解字符串搜索的工作原理,例如Knuth Morris Pratt和Boyer Moore Algo,并将其扩展为两个二维。检查页面查看字符串搜索的工作原理,例如Knuth Morris Pratt和Boyer Moore Algo,并将其扩展为两个二维。检查页面