logo
Published on

screenshotsで画面全体を撮影する #Rust

Authors

この記事では、Rustでスクリーンショットを撮影する方法を紹介します。 画面全体を撮影し、指定のフォルダに画像を保存するまでを行います。

Rustでスクリーンショットを撮影するには、screenshots - crates.io: Rust Package Registryというcrateを使うことが一般的です。

Rustでスクリーンショットを撮影する

まず、Cargo.tomlに以下を追加します。 これにより、screenshotsというcrateを使うことができるようになります。

screenshots = "0.8.6"

全体のコードは以下のようになります。 これは、screenshot()という関数を定義し、その中でスクリーンショットを撮影しています。


use screenshots::Screen;
use std::time::Instant;

// screenshot(dest) -> void
fn screenshot(dest: &str) {
    let start = Instant::now();
    let screens = Screen::all().unwrap();

    for screen in screens {
        println!("capturer {screen:?}");
        let mut image = screen.capture().unwrap();
        image
            .save(format!("{}", dest))
            .unwrap();
    }
    println!("screenshot took {}ms", start.elapsed().as_millis());
}

この関数の実行フローは以下のようになります。

  1. use screenshots::Screen;: screenshotsというcrateのScreenという構造体を使えるようにする
  2. use std::time::Instant;: stdtimeInstantという構造体を使えるようにする
  3. fn screenshot(dest: &str) {: screenshotという関数を定義する。引数はdestという文字列型
  4. let start = Instant::now();: startという変数に、現在時刻を代入する
  5. let screens = Screen::all().unwrap();: screensという変数に、全てのスクリーンを代入する
  6. for screen in screens {: screensの中身をscreenという変数に代入し、ループを回す
  7. let mut image = screen.capture().unwrap();: screenのスクリーンショットを撮影し、imageという変数に代入する
  8. image.save(format!("{}", dest)).unwrap();: imagedestというファイル名で保存する
  9. println!("screenshot took {}ms", start.elapsed().as_millis());: スクリーンショットを撮影するのにかかった時間を表示する

以上となります。

この関数は以下のように呼び出すことができます。

screenshot("screenshot.png");

または、以下のように呼び出すこともできます。

screenshot("./path/to/screenshot.png");

まとめ

この記事では、Rustでスクリーンショットを撮影する方法を紹介しました。

タグ

各ツール価格:1万円~

サポート:6千円/1時間

見積もり:無料


▶ 詳細📧 ご連絡

ご覧頂きありがとうございます。
商品やサービスが本サイト限定で無料や割引になる、広告の一覧をご活用頂くことで、本サイトの運営をご支援いただけます。