Полный скриншот Java - PullRequest
2 голосов
/ 01 июня 2011

Я хотел отобразить на JFrame в программе полный скриншот моего экрана.Пока используя приведенный ниже код, я смог отобразить только часть экрана.Код ниже является содержанием краски (Графика г).Как я могу сделать это на весь экран?

// the screen resolution is 1280 x 1024 while the JPanel size is only 1024 x 768
Dimension resolution = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle rectangle = new Rectangle(resolution);
robot = new Robot();
BufferedImage bufferedImage = robot.createScreenCapture(rectangle);                                
g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null);

Ответы [ 3 ]

1 голос
/ 01 июня 2011

Может быть, использовать что-то вроде этого:

//get the screen size
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
BufferedImage image = robot.createScreenCapture (dim);
//other code
//...

Я вижу, что у вас есть некоторые ошибки, я не знаю, компилируется ли ваш код, потому что ссылки, похоже, не объявлены, но код, подобный этому, сделает скриншот вашего рабочего стола:

import java.awt.geom.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;

public class ScreenCapturer
{
    public static void main(String[] args)throws Exception
    {
        Dimension resolution = Toolkit.getDefaultToolkit().getScreenSize();
        Rectangle rectangle = new Rectangle(resolution);
        Robot robot = new Robot();
        BufferedImage bufferedImage = robot.createScreenCapture(rectangle);
        Graphics g = bufferedImage.getGraphics();
        //g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null);
        File out = new File("image.png");
        ImageIO.write(bufferedImage,"png",out);
    }
}

Я сохранил файл изображения в формате png вместо того, чтобы рисовать его на экране или в рамке.

0 голосов
/ 01 июня 2011
g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null);

Упростите свой код, используя только одну инструкцию на строку, тогда вы сможете понять код.

Почему вы используете ширину и высоту изображения?Как это масштабирует изображение, если указать полный размер изображения?Я предполагаю, что вы хотите:

Image scaled = bufferedImage.getScaledInstance(1024, 768, Image.SCALE_DEFAULT);

Теперь вместо того, чтобы рисовать на заказ, вы можете просто добавить свое изображение в JLabel:

ImageIcon icon = new ImageIcon( scaled );
JLabel label = new JLabel( icon );
frame.add( label );
0 голосов
/ 01 июня 2011

Используйте java.awt.Toolkit.getDefaultToolkit().getScreenSize(), чтобы получить размер экрана: http://www.roseindia.net/java/java-get-example/screen-dimensions.shtml

...