从IOS图片上传到.net app:旋转

Pål*_*sen 10 .net c# asp.net file-upload image

我有下面的代码用于上传和调整IOS设备中的图片到我的.net应用程序.用户使用纵向拍摄照片,然后所有照片都显示在我的应用程序中,旋转错误.有任何建议如何解决这个问题?

            string fileName = Server.HtmlEncode(FileUploadFormbilde.FileName);
            string extension = System.IO.Path.GetExtension(fileName);
            System.Drawing.Image image_file = System.Drawing.Image.FromStream(FileUploadFormbilde.PostedFile.InputStream);
            int image_height = image_file.Height;
            int image_width = image_file.Width;
            int max_height = 300;
            int max_width = 300;

            image_height = (image_height * max_width) / image_width;
            image_width = max_width;

            if (image_height > max_height)
            {
                image_width = (image_width * max_height) / image_height;
                image_height = max_height;
            }

            Bitmap bitmap_file = new Bitmap(image_file, image_width, image_height);
            System.IO.MemoryStream stream = new System.IO.MemoryStream();

            bitmap_file.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
            stream.Position = 0;

            byte[] data = new byte[stream.Length + 1];
            stream.Read(data, 0, data.Length);
Run Code Online (Sandbox Code Playgroud)

Mor*_*ard 29

你去我的朋友:

Image originalImage = Image.FromStream(data);

 if (originalImage.PropertyIdList.Contains(0x0112))
        {
            int rotationValue = originalImage.GetPropertyItem(0x0112).Value[0];
            switch (rotationValue)
            {
                case 1: // landscape, do nothing
                    break;

                case 8: // rotated 90 right
                    // de-rotate:
                    originalImage.RotateFlip(rotateFlipType: RotateFlipType.Rotate270FlipNone);
                    break;

                case 3: // bottoms up
                    originalImage.RotateFlip(rotateFlipType: RotateFlipType.Rotate180FlipNone);
                    break;

                case 6: // rotated 90 left
                    originalImage.RotateFlip(rotateFlipType: RotateFlipType.Rotate90FlipNone);
                    break;
            }
        }
Run Code Online (Sandbox Code Playgroud)

  • 缺少某些值,此属性可以包含1到8之间的任何值:http://www.impulseadventure.com/photo/exif-orientation.html (2认同)

Ale*_*der 1

您必须从Image.PropertyItems集合中的 EXIF 数据中读取图像的 Orientation 值,并相应地旋转它。

  • 对不起。您已经位于正确的 Image 对象上,我给了您一个阅读链接。我坚信通过实践来学习很重要,而不是通过复制粘贴代码来学习。(并不是说那里有数百个代码示例。) (2认同)