BetterCms.Module.MediaManager.Services.DefaultMediaImageService.RotateImage C# (CSharp) Method

RotateImage() private method

private RotateImage ( Stream fileStream ) : Stream
fileStream Stream
return Stream
        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;
        }