【C#】画像の上下左右反転、90,180,270度回転

画像(Bitmap)の上下、左右反転、および90°、180°、270°の回転はImageクラスのRotateFlipメソッドを使うと簡単に行う事ができます。

【C#】画像の上下左右反転、90,180,270度回転

上記プログラムの一部抜粋


// 表示する画像の読み込み
var bmpOriginal = new Bitmap("image.jpg");

// オリジナル画像(RotateNoneFlipNone)
picRotateNoneFlipNone.BackgroundImage = bmpOriginal;

// 上下反転画像(RotateNoneFlipY)
var bmpRotateNoneFlipY = (Bitmap)bmpOriginal.Clone(); // 画像のコピー
bmpRotateNoneFlipY.RotateFlip(RotateFlipType.RotateNoneFlipY);
picRotateNoneFlipY.BackgroundImage = bmpRotateNoneFlipY;

// 左右反転画像(RotateNoneFlipX)
var bmpRotateNoneFlipX = (Bitmap)bmpOriginal.Clone(); // 画像のコピー
bmpRotateNoneFlipX.RotateFlip(RotateFlipType.RotateNoneFlipX);
picRotateNoneFlipX.BackgroundImage = bmpRotateNoneFlipX;

// 上下左右反転画像(RotateNoneFlipXY)
var bmpRotateNoneFlipXY = (Bitmap)bmpOriginal.Clone(); // 画像のコピー
bmpRotateNoneFlipXY.RotateFlip(RotateFlipType.RotateNoneFlipXY);
picRotateNoneFlipXY.BackgroundImage = bmpRotateNoneFlipXY;

// 90°回転画像(bmpRotate90FlipNone)
var bmpRotate90FlipNone = (Bitmap)bmpOriginal.Clone(); // 画像のコピー
bmpRotate90FlipNone.RotateFlip(RotateFlipType.Rotate90FlipNone);
picRotate90FlipNone.BackgroundImage = bmpRotate90FlipNone;

// 180°回転画像(Rotate180FlipNone)
var bmpRotate180FlipNone = (Bitmap)bmpOriginal.Clone(); // 画像のコピー
bmpRotate180FlipNone.RotateFlip(RotateFlipType.Rotate180FlipNone);
picRotate180FlipNone.BackgroundImage = bmpRotate180FlipNone;

// 270°回転画像(Rotate270FlipNone)
var bmpRotate270FlipNone = (Bitmap)bmpOriginal.Clone(); // 画像のコピー
bmpRotate270FlipNone.RotateFlip(RotateFlipType.Rotate270FlipNone);
picRotate270FlipNone.BackgroundImage = bmpRotate270FlipNone;

回転や左右反転はRotateFlipTypeというenumで定義されているので、上下、左右反転、90°、180°、270°の回転の組み合わせで指定することができます。

(参考)

https://msdn.microsoft.com/ja-jp/library/system.drawing.rotatefliptype(v=vs.110).aspx

この方法ですが、個人的には以下のような場合に使用しています。

●カメラを90°回転させて配置させたときの画像の90°回転表示

●カメラ画像取り込み用のライブラリを使ったとき、画像の上下が反転している場合の上下反転

●機械学習用画像登録時、上下、左右反転、回転をした画像のデータ増し

など

画像処理のためのC#へ戻る