Как избавиться от черного фона на изображениях, снятых с помощью робота? - PullRequest
1 голос
/ 25 мая 2011

В нажатии кнопки Я реализовал код, когда я нажимаю кнопку в первый раз, она получает значение x, y, когда я нажимаю кнопку во второй раз, она получает значение x1, y1 и захватывает изображение. Но так или иначе это добавляет черный фон к оригинальной картинке. Как я могу избежать этого?

Toolkit tool = Toolkit.getDefaultToolkit();
c++;
Dimension d = tool.getScreenSize();
if(c==1)
{
    x = MouseInfo.getPointerInfo().getLocation().x; 
    y = MouseInfo.getPointerInfo().getLocation().y;
}
if(c==2)
{
    int x1= MouseInfo.getPointerInfo().getLocation().x; 
    int y1= MouseInfo.getPointerInfo().getLocation().y;
    Rectangle rect = new Rectangle(x,y,x1,y1);
    Robot robot = new Robot();
    String J="Screen";
    J=J+""+i;
    //*************
    String ext = ".jpg";
    String path = loc+J+ ext;
    File f = new File(path);
    i++;
    Thread t1 = new Thread();
    t1.sleep(100);
    BufferedImage img = robot.createScreenCapture(rect);
    // img.createGraphics();
    ImageIO.write(img,"jpeg",f);
    tool.beep();
    c=0;
    x=0;
    y=0;
    x1=0;
    y1=0;  
}

Ответы [ 2 ]

0 голосов
/ 25 мая 2011

Я думаю, что нашел проблему. Конструктор для Rectangle занимает исходное положение x и y, а также height и width. Похоже, вы даете ему 2 х / у очков.

Попробуйте вместо этого:

int height = Math.max(y - y1, y1 - y);
int width = Math.max(x - x1, x1 - x);
Rectangle rect = new Rectangle(x,y,width, height);
0 голосов
/ 25 мая 2011

Если это метод mouseClicked(MouseEvent event)MouseListener), почему вы используете:

MouseInfo.getPointerInfo().getLocation().x;

Вероятно, вы должны использовать методы MouseEvent:

event.getX();

или

event.getXOnScreen();

Возможно, методы MouseInfo дают вам неправильные значения.

...