1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rust研究:画像ファイルの処理

Posted at

Rust初心者です。ぼちぼちやってます。

Rust による画像ファイルの処理を調べてみました。

image クレートを使用します。

C:\work> cargo add image

以下、サンプルコードと処理結果の画像ファイルです。

// run.rs
use image::error::ImageResult;
use image::io::Reader;
use image::ImageFormat;
use image::imageops::FilterType;

pub fn process() -> ImageResult<()> {

    // 画像ファイルを読みだしてイメージデータを取得
    let mut image = Reader::open("image.png")?
    .decode()?;

    // イメージデータのサイズ(横×縦)の確認
    let width = image.width();
    let height = image.height();
    println!("size = {}x{}", width, height);

    // イメージデータ右下の四分の一をクロップ
    let image2 = image.crop(width/2, height/2, width/2, height/2);

    // ファイルに保存。
    // 画像フォーマットは保存先ファイルの拡張子で判別。PNG 形式で保存
    image2.save("image2.png")?;
    // イメージデータを画像フォーマットを指定してファイルに保存。
    // image3.save_with_format("image2.dat", ImageFormat::Bmp)?; // BMP 形式で保存

    // 90度回転 / 180度回転 / 270度回転
    let image3 = image2.rotate90(); // .rotate180(); // .rotate270();
    image3.save("image3.png")?;

    // リサイズ(4倍に拡大・ガウシアンフィルタを使用)
    let image4 = image3.resize(image3.width()*2, image3.height()*2, FilterType::Gaussian);
    image4.save("image4.png")?;

    // 上下の鏡像
    let image5 = image4.flipv();
    image5.save("image5.png")?;

    // 左右の鏡像
    let image6 = image5.fliph();
    image6.save("image6.png")?;

    // グレイスケール
    let mut image7 = image6.grayscale();
    image7.save("image7.png")?;

    // インバート
    image7.invert();
    image7.save("image8.png")?;
    
    Ok(())
}

image.png (もとの画像)
image.jpg

image2.png (クロップ)
image2.png

image3.png (90度回転)
image3.png

image4.png (リサイズ)
image4.png

image5.png (上下鏡像)
image5.png

image6.png (左右鏡像)
image6.png

image7.png (グレイスケール)
image7.png

image8.png (インバート)
image8.png

以上。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?