1. 原始圖片文件 右鍵屬性->詳細信息,此寬高比應該顯示為豎向,上傳後卻變橫向。 2.查看EXIF信息圖片寬高和與 1 中的寬高是顛倒的,並不相同。(線上上傳圖片查看EXIF:https://exif.tuchong.com/)(Exif是英文Exchangeable Image File(可交換 ...
1. 原始圖片文件 右鍵屬性->詳細信息,此寬高比應該顯示為豎向,上傳後卻變橫向。
2.查看EXIF信息圖片寬高和與 1 中的寬高是顛倒的,並不相同。(線上上傳圖片查看EXIF:https://exif.tuchong.com/)(Exif是英文Exchangeable Image File(可交換圖像文件)的縮寫,相機文件設計標準,記錄數位照片的屬性信息和拍攝數據。)
3.發現問題是 EXIF方向預設旋轉90度
4.需代碼順時針方向旋轉90度後此方向屬性變0度,保存翻轉後圖片即正常。
1 string fileName = file.FileName; //file為HTTP上傳文件 2 string extname = Path.GetExtension(fileName); 3 Stream stream = file.InputStream; 4 System.Drawing.Image image = System.Drawing.Image.FromStream(stream); 5 6 byte orien = 0; 7 var item = image.PropertyItems.Where(o => o.Id == 274).ToList(); 8 if (item!=null && item.Count() > 0)orien = item[0].Value[0]; 9 if(orien == 6) 10 { 11 image.RotateFlip(RotateFlipType.Rotate90FlipNone); 12 } 13 14 MemoryStream ms = new MemoryStream(); 15 try 16 { 17 if (extname.ToLower().Equals(".jpg")) 18 { 19 image.Save(ms, ImageFormat.Jpeg); 20 } 21 else 22 { 23 image.Save(ms, image.RawFormat); 24 } 25 26 } 27 catch 28 { 29 image.Save(ms, ImageFormat.MemoryBmp); 30 }
5. 代碼里PropertyItems的ID為什麼是274,orien 為什麼是6(https://docs.microsoft.com/en-us/windows/desktop/gdiplus/-gdiplus-constant-property-item-descriptions#propertytagorientation、https://yq.aliyun.com/articles/492291)。
6.Exif的Orientation說明(https://www.cnblogs.com/csonezp/p/5564809.html、https://blog.csdn.net/ouyangtianhan/article/details/29825885)