본문 바로가기
자바(Java)

Java로 스크린샷을 찍는 프로그램 쉽게 이해하기

by 코딩하는 욤욤이 2025. 1. 18.
반응형

Java로 스크린샷을 찍는 프로그램 작성하기

 

Java로 스크린샷을 찍는 프로그램을 작성하려면, 기본적으로 Java의 java.awtjavax.imageio 패키지를 사용합니다. 이 프로그램은 간단히 말해 컴퓨터 화면의 특정 영역이나 전체 화면을 캡처하고 이미지를 저장하는 역할을 합니다. 지금부터 모든 분들이 쉽게 따라 할 수 있도록 단계별로 자세히 설명하겠습니다.


 

준비 작업

  1. 필요한 클래스 및 패키지 이해하기:
    • Robot: Java의 java.awt.Robot 클래스는 키보드와 마우스를 자동으로 제어하거나 화면을 캡처할 때 사용됩니다.
    • Rectangle: 이 클래스는 캡처할 영역의 크기와 위치를 지정하는 데 사용됩니다.
    • BufferedImage: 캡처된 화면을 이미지로 저장하는 데 사용됩니다.
    • ImageIO: 이미지 파일을 읽고 쓰는 데 사용됩니다.
  2. 개발 환경 설정:
    • Java Development Kit (JDK)가 설치되어 있어야 합니다.
    • 텍스트 편집기 또는 IDE(예: IntelliJ IDEA, Eclipse) 사용.

 

단계별 코드 작성

 

1단계: 기본 구조 설정

 

먼저, 클래스와 main 메서드를 정의합니다.

java
복사
import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class ScreenshotExample { public static void main(String[] args) { // 프로그램 실행 시 동작할 코드를 작성할 예정입니다. } }
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class ScreenshotExample {
    public static void main(String[] args) {
        // 프로그램 실행 시 동작할 코드를 작성할 예정입니다.
    }
}

 

2단계: 화면 캡처 기능 추가

 

화면을 캡처하려면 Robot 클래스를 사용합니다.

public static void main(String[] args) {
    try {
        // 1. Robot 객체 생성
        Robot robot = new Robot();

        // 2. 화면 크기 가져오기
        Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());

        // 3. 화면 캡처
        BufferedImage screenCapture = robot.createScreenCapture(screenRect);

        // 4. 파일로 저장
        File outputFile = new File("screenshot.png");
        ImageIO.write(screenCapture, "png", outputFile);

        System.out.println("스크린샷이 저장되었습니다: " + outputFile.getAbsolutePath());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

 

코드 설명

  1. Robot robot = new Robot();:
    • Robot 객체는 화면 캡처 기능을 제공합니다.
    • 예외 처리가 필요하므로 try-catch 블록에 포함합니다.
  2. Rectangle screenRect:
    • Rectangle 객체는 캡처할 화면의 크기와 위치를 정의합니다.
    • Toolkit.getDefaultToolkit().getScreenSize()는 현재 화면의 전체 크기를 반환합니다.
  3. robot.createScreenCapture(screenRect):
    • 지정된 Rectangle 영역을 캡처합니다.
    • 캡처된 이미지는 BufferedImage 객체에 저장됩니다.
  4. ImageIO.write():
    • 캡처된 이미지를 파일로 저장합니다.
    • png, jpg 등 다양한 형식으로 저장할 수 있습니다.

 

실행 방법

  1. Java 프로그램을 컴파일하고 실행합니다.
  2. 실행 후, 현재 화면의 캡처본이 프로젝트 폴더에 screenshot.png로 저장됩니다.

 

개선 사항 및 추가 기능

 

저장 경로 사용자 입력 받기: 사용자가 저장 위치를 직접 지정하도록 할 수 있습니다.

Scanner scanner = new Scanner(System.in);
System.out.print("저장할 파일 이름을 입력하세요: ");
String fileName = scanner.nextLine();
File outputFile = new File(fileName + ".png");

 

지정된 영역 캡처: 화면 전체가 아니라 특정 영역만 캡처하려면 Rectangle의 크기와 좌표를 설정합니다.

Rectangle captureRect = new Rectangle(100, 100, 500, 300); // x, y, width, height
BufferedImage screenCapture = robot.createScreenCapture(captureRect);

 

키보드 단축키로 캡처: 추가적으로 KeyListener를 사용해 특정 키를 누를 때 스크린샷이 찍히도록 구현할 수 있습니다.


 

전체 코드

 

아래는 최종 완성된 프로그램의 전체 코드입니다.

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Scanner;
import javax.imageio.ImageIO;

public class ScreenshotExample {
    public static void main(String[] args) {
        try {
            // Robot 객체 생성
            Robot robot = new Robot();

            // 사용자에게 파일 이름 입력받기
            Scanner scanner = new Scanner(System.in);
            System.out.print("저장할 파일 이름을 입력하세요: ");
            String fileName = scanner.nextLine();

            // 화면 크기 설정
            Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());

            // 화면 캡처
            BufferedImage screenCapture = robot.createScreenCapture(screenRect);

            // 파일 저장
            File outputFile = new File(fileName + ".png");
            ImageIO.write(screenCapture, "png", outputFile);

            System.out.println("스크린샷이 저장되었습니다: " + outputFile.getAbsolutePath());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

결과

  1. 프로그램 실행 후 저장할 파일 이름을 입력하면, 화면의 캡처본이 지정된 이름으로 저장됩니다.
  2. 파일은 .png 형식으로 저장되며, 저장 경로는 프로그램이 실행된 디렉토리입니다.

이제 이 코드를 통해 Java로 스크린샷 프로그램을 만드는 과정을 쉽게 이해하고 직접 구현할 수 있을 것입니다! 🚀

반응형