EXIFのOrientationタグの値に基づいて画像を回転し、適切な方向に戻す方法。 この例では、値がリトルエンディアンで格納されていることを前提としている。 また、左右反転・上下反転している画像については考慮していない。
using (var origin = new Bitmap("origin.jpg")) { var rotation = RotateFlipType.RotateNoneFlipNone; foreach (var item in origin.PropertyItems) { if (item.Id != 0x0112) continue; // IFD0 0x0112; Orientation switch (item.Value[0]) { case 3: rotation = RotateFlipType.Rotate180FlipNone; break; case 6: rotation = RotateFlipType.Rotate90FlipNone; break; case 8: rotation = RotateFlipType.Rotate270FlipNone; break; } } using (var rotated = (Bitmap)origin.Clone()) { rotated.RotateFlip(rotation); rotated.Save("rotated.bmp", ImageFormat.Bmp); } }