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時間*

見積もり:無料


*一律・1時間未満切上

👉 詳細はこちらから。📧 お問い合わせ

ご覧いただき、ありがとうございます。本サイトの運営コストは広告をご覧いただくことで賄われています。様々な有名サービスが本サイト経由限定・期間限定で無料・割引・キャッシュバックになる、お得なプロモーションをご利用いただくことで、本サイトの運営をご支援いただけます。