Java получает площадь пикселей и превращается в изображение - как это можно сделать более эффективным? - PullRequest
2 голосов
/ 18 ноября 2011

У меня есть некоторый код, который захватит область пикселей на экране и превратит их в объект BufferedImage. Дело в том, что это МАССОВО медленно, поэтому я ищу поддержку в увеличении скорости!

Код выглядит следующим образом:

public BufferedImage getScreenPortion(Point topleft,Point bottomright){

    int width = bottomright.x - topleft.x;
    int height = bottomright.y - topleft.y;
    BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

    for(int p=0;p<height;p++){

    for(int i= 0;i<width;i++){

        Color pixel = robot.getPixelColor(topleft.x+i, topleft.y+p);
        bi.setRGB(i, p, pixel.getRGB());
        }
    }

    return bi;


}

и я передаю его: getScreenPortion(new Point(1081,824),new Point(1111,844));, что означает, что я пытаюсь получить области примерно 30x20 - но это занимает 7 секунд, что ужасно медленно!

1 Ответ

3 голосов
/ 18 ноября 2011

Исправлено - теперь я вместо этого использую:

Rectangle screenRect = new Rectangle(topleft.x, topleft.y, width, height);
BufferedImage grid = robot.createScreenCapture(screenRect);
...