private Stream RotateImage(Stream fileStream)
{
var originalImage = Image.FromStream(fileStream);
if (originalImage.PropertyIdList.Contains(0x0112))
{
int rotationValue = originalImage.GetPropertyItem(0x0112).Value[0];
var wasRotated = true;
switch (rotationValue)
{
case 1: // landscape, do nothing
break;
case 8: // rotated 90 right
// de-rotate:
originalImage.RotateFlip(RotateFlipType.Rotate270FlipNone);
break;
case 3: // bottoms up
originalImage.RotateFlip(RotateFlipType.Rotate180FlipNone);
break;
case 6: // rotated 90 left
originalImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
break;
default:
wasRotated = false;
break;
}
if (wasRotated)
{
var rotatedStream = new MemoryStream();
var codec = ImageHelper.GetImageCodec(originalImage);
if (codec == null)
{
originalImage.Save(rotatedStream, ImageFormat.Bmp);
}
else
{
originalImage.Save(rotatedStream, codec, null);
}
fileStream = rotatedStream;
}
}
return fileStream;
}