자바/순수자바
[JAVA]자바 캡쳐 스크린샷 다양한상황 (듀얼모니터) capture #1
자바로 캡쳐 상황이 굉장히 다양하고 자주쓰여서 정리해볼까합니다. 총 상황은 1,2,3,4로 진행될거같은데
이번에는 1,2만 정리를 해볼까합니다
추가로 더 필요한 다양한 캡쳐상황이 있다면 저도 연구해볼테니 많이 필요한게있으면 댓글달아주세요~
1. 일반캡쳐 |
1.일반캡쳐
Robot robot = new Robot();
Rectangle area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage bufferedImage = robot.createScreenCapture(area);
ImageIO.write(bufferedImage, "jpg", new File("D://a.jpg"));
일반캡쳐는 이와같이 Robot클래스를 이용하면 쉽게 얻어올수있습니다.
int x = 100;
int y = 100;
int width = 200;
int height = 200;
Rectangle area = new Rectangle(x, y, width, height);
BufferedImage bufferedImage = robot.createScreenCapture(area);
ImageIO.write(bufferedImage, "jpg", new File("D://a.jpg"));
이런식으로 하면 약간 응용해서 x,y시작위치로부터 width,height 의 범위만큼의 캡쳐만 얻어올수도있어요.
2.듀얼모니터캡쳐
public static void screenMultipleMonitors() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gDevs = ge.getScreenDevices();
for (GraphicsDevice gDev : gDevs) {
System.out.println(gDev);
DisplayMode mode = gDev.getDisplayMode();
Rectangle b = gDev.getDefaultConfiguration().getBounds();
System.out.println(gDev.getIDstring());
System.out.println("Min : (" + b.getMinX() + "," + b.getMinY() + ") ;Max : (" + b.getMaxX() + "," + b.getMaxY() + ")");
System.out.println("Width : " + mode.getWidth() + " ; Height :" + mode.getHeight());
try {
Robot robot = new Robot();
BufferedImage image = robot.createScreenCapture(new Rectangle((int) b.getMinX(),(int) b.getMinY(), (int) b.getWidth(), (int) b.getHeight()));
ImageIO.write(image, "png",new File("D://a_" + gDev.getIDstring().replace("\\", "") + ".png"));
} catch (AWTException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
듀얼모니터의 경우는 해당 메소드를 그대로 옮겨서 붙이고 실행해보시면 D드라이브 하위에 a_모니터ID 형태로
현재 인식되는 모니터의 개수만큼 각각의 캡쳐파일이 생성됩니다.
GraphicsEnvironment
GraphicsDevice
DisplayMode
등을 이용하면 캡쳐뿐이 아니라 현모니터의 속성정보도 얻어올수있습니다 다양하게 응용 할수있는상황이 많습니다.
sysout 부분확인하시면 조금 더 명확하게 아실수있습니다.
Win32GraphicsDevice[screen=0]
\Display0
Min : (0.0,0.0) ;Max : (1920.0,1080.0)
Width : 1920 ; Height :1080
Win32GraphicsDevice[screen=1]
\Display1
Min : (1920.0,0.0) ;Max : (3840.0,1080.0)
Width : 1920 ; Height :1080
저의경우에는 이런식으로 나오네요~
이번엔 여기까지!
이전에 웹 스크롤 다된 전체창크기 만큼 캡쳐 및 특정 div등 엘리먼트 영역만 캡쳐하는거
시도해보다가 애먹은기억이 많네요..
아래 기능은 다음편에 작성하도록 하겠습니다.
3.웹 전체화면(스크롤까지 다 된크기) 캡쳐
4.웹의 전체화면중 특정엘리먼트영역만 캡쳐
'자바 > 순수자바' 카테고리의 다른 글
[JAVA] 자바 스윙 Swing 파비콘, 아이콘 favicon,icon 등록 (0) | 2020.05.25 |
---|---|
[JAVA] 자바 Robot 로봇 현재 마우스 위치 색상 추출 (2) | 2020.05.21 |
자바 스윙테마( Swing Theme LookAndFeel) synthetica 적용#2편 (1) | 2020.05.18 |
자바 스윙테마( Swing Theme LookAndFeel) synthetica 소개#1편 (0) | 2020.05.17 |
자바 랜덤숫자 뽑아내는법 (0) | 2020.05.17 |
댓글