Javaでスクリーンショットを撮る方法【Web/デスクトップ対応】

Javaを使ってスクリーンショットを撮影する方法を、デスクトップアプリケーションとWebブラウザ(Selenium)の両方に分けて解説します。操作の記録やエラー発生時のログ取得など、テストや自動化に役立つテクニックです。


この記事でわかること

  • Java標準APIで画面全体のスクリーンショットを撮る方法
  • Seleniumを使ってWebページのスクリーンショットを撮る方法
  • 取得した画像を保存する方法(PNG形式)

デスクトップ画面をスクリーンショットする(Java AWT)

必要なライブラリ

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;

コード例

public class DesktopScreenshot {
    public static void main(String[] args) {
        try {
            // 画面全体のサイズを取得
            Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());

            // Robotを使ってスクリーンショット取得
            Robot robot = new Robot();
            BufferedImage image = robot.createScreenCapture(screenRect);

            // 画像ファイルとして保存(PNG形式)
            ImageIO.write(image, "png", new File("desktop_screenshot.png"));

            System.out.println("スクリーンショットを保存しました。");
        } catch (AWTException | IOException e) {
            e.printStackTrace();
        }
    }
}

出力例

  • desktop_screenshot.pngというファイル名でカレントディレクトリに保存されます。
  • PNG形式で画質劣化なし。

Webページのスクリーンショットを撮る(Selenium)

必要なライブラリ

  • Selenium WebDriver
  • ChromeDriver(もしくは他のブラウザドライバ)

Mavenの場合、pom.xmlに以下を追加

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.15.0</version>
</dependency>

コード例

import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.io.FileHandler;

import java.io.File;
import java.io.IOException;

public class WebScreenshot {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

        WebDriver driver = new ChromeDriver();
        try {
            driver.get("https://example.com");

            // スクリーンショットを取得
            File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
            FileHandler.copy(srcFile, new File("web_screenshot.png"));

            System.out.println("Webページのスクリーンショットを保存しました。");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            driver.quit();
        }
    }
}

注意点

  • WebDriverのバージョンとChromeDriverの互換性に注意
  • ページ全体ではなく「表示範囲」のスクリーンショットになります(フルページは別ライブラリが必要)

よくある応用例

シチュエーション方法
単純な画面キャプチャ(PC全体)AWT + Robot
自動化されたブラウザの記録Selenium + TakesScreenshot
UIテストで失敗時に画像保存try-catchブロックに組込
操作ログの可視化・証跡保管タイマー or イベントトリガーで撮影

まとめ

Javaでスクリーンショットを撮る方法は目的によって使い分けが必要です:

  • 画面全体のキャプチャRobot クラスを使ったAWTベース
  • WebブラウザのキャプチャSelenium WebDriver + TakesScreenshot

画像をログや資料に活用すれば、トラブル時の再現や説明が非常にスムーズになります。自動テストや業務自動化にも役立つので、ぜひ導入してみてください。

タイトルとURLをコピーしました