C# 检测图片是否被旋转并修改到正真的旋转

一、在利用jpg合并pdf的过程中发现大量的图片旋转,用看图软件打开旋转的照片发现是正常的,经过对比发现这些照片的image.PropertyItems.Value[0]值和没有发生旋转的照片有差异。故而写了下面的函数处理。

点击查看代码
/// <summary>
        /// C# 检测图片是否被旋转并修改到正真的旋转
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static bool readPictureDegreeAndKiRotate(string path)
        {
            bool bl = false;
            try
            {
                //获取旋转角度
                int rotate = 0;
                using (var image = System.Drawing.Image.FromFile(path))
                {
                    foreach (var prop in image.PropertyItems)
                    {
                        if (prop.Id == 0x112)
                        {
                            if (prop.Value[0] == 6)
                                rotate = 90;
                            if (prop.Value[0] == 8)
                                rotate = -90;
                            if (prop.Value[0] == 3)
                                rotate = 180;
                            prop.Value[0] = 1;
                        }
                    }
                }

                //旋转图片

                using (Bitmap bitmap = new Bitmap(path))
                {
                    RotateFlipType rotateFlipType = new RotateFlipType();
                    if (rotate == 90)
                    {
                        rotateFlipType = RotateFlipType.Rotate90FlipNone;
                        bitmap.RotateFlip(rotateFlipType);
                        bitmap.Save(path);
                    }
                    else if (rotate == -90)
                    {
                        rotateFlipType = RotateFlipType.Rotate270FlipNone;
                        bitmap.RotateFlip(rotateFlipType);
                        bitmap.Save(path);
                    }
                    else if (rotate == 180)
                    {
                        rotateFlipType = RotateFlipType.Rotate180FlipNone;
                        bitmap.RotateFlip(rotateFlipType);
                        bitmap.Save(path);
                    }
                    
                    bitmap.Dispose();
                }

                bl = true;

            }
            catch (Exception ex)
            {
              
                bl = false;
            }
            return bl;
        }
posted @ 2022-07-04 09:11  XYSGIS  阅读(245)  评论(0)    收藏  举报