【Rust】画像を読み込む

Uncategorized
417 words

Rust プロジェクトを作成

次のコマンドで新しい Rust プロジェクトを作成します。

1
cargo new rust-project-1

VS Code のエクスプローラーで、src>main.rs ファイルを開きます。

とりあえず動くか確認します。

main関数の上の Run ボタンを押すと実行されて、下のターミナルに結果が表示されればOK。

画像を読み込む

依存関係の追加

Rustで画像を読み込むには、imageライブラリを使用します。

まず、Cargo.tomlファイルに以下の行を追加して imageライブラリを依存関係に追加します。

1
2
[dependencies]
image = "0.24.5"

また、次のコマンドで最新版のimageライブラリを追加することもできます。

1
cargo add image

コード

以下のコードで、画像を読み込むことができます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use std::path::Path;
use image::GenericImageView;

fn main() {
// 画像ファイルのパスを定義
let image_path = Path::new("./image/FrWJHNxaYAQOG6I.jpg");

// 画像を読み込み、イメージオブジェクトを作成
let img = match image::open(image_path) {
Ok(img) => img,
Err(e) => panic!("Failed to load image: {}", e),
};

// 画像の幅と高さを取得
let (width, height) = img.dimensions();
println!("width: {}", width);
println!("height: {}", height);

// 画像のピクセルデータを取得
let pixels = img.into_rgb8().into_vec();

// 画像の処理
// ...

// ピクセルデータを元のフォーマットに戻す
let img = image::RgbImage::from_vec(width, height, pixels).unwrap();

// 画像を保存
img.save("output.jpg").unwrap();
}

実行すると、ターミナルに画像サイズ、フォルダーに画像が出力されます。

おわりに

Visual Studio Code で Rust を書くには rust-analyzer拡張機能 がオススメです。

コード補完、構文の強調表示、形式の指定、デバッグなど便利に使うことができるようになります。

GitHub

今回作成したプロジェクト一式

https://github.com/noitaro/rust-image-open

参考

https://docs.rs/image/latest/image/

https://learn.microsoft.com/ja-jp/windows/dev-environment/rust/setup