標籤:
在開發Android應用的時候,可能會遇到類似朋友圈中拍照或相簿選取圖片的情境,拍照或選取圖片之後在顯示的時候卻發現圖片的角度不對,明明是豎版拍照,顯示出來缺失躺著的。
這是因為在某些特定手機上例如三星系列手機上,預裝的相簿程式在查看圖片的時候會根據拍照的時候手機旋轉角度來進行自動旋轉。
接下來說明一下具體怎麼擷取圖片的拍攝角度以及如何進行旋轉。
1 /// <summary> 2 /// 擷取指定路徑圖片拍攝角度 3 /// </summary> 4 /// <param name="path"></param> 5 /// <returns></returns> 6 protected Int32 GetImageRotate(String path) 7 { 8 var angle = 0; 9 ExifInterface exif = null;10 try11 {12 exif = new ExifInterface(path);13 }14 catch (Exception ex)15 {16 }17 18 if (exif != null)19 {20 angle = exif.GetAttributeInt(ExifInterface.TagOrientation, -1);21 if (angle != -1)22 {23 switch (angle)24 {25 case (int)Android.Media.Orientation.Rotate90:26 angle = 90;27 break;28 case (int)Android.Media.Orientation.Rotate180:29 angle = 180;30 break;31 case (int)Android.Media.Orientation.Rotate270:32 angle = 270;33 break;34 }35 }36 else angle = 0;37 }38 return angle;39 }
擷取角度之後,就簡單了,接下來對圖片進行旋轉處理。
angle = GetImageRotate(path); if (angle != 0) { var m = new Matrix(); var width = bitmap.Width; var height = bitmap.Height; m.SetRotate(angle); bitmap = Bitmap.CreateBitmap(bitmap, 0, 0, width, height, m, true); }
接下來如何處理就看自己的需要了。
Xamarin開發Android筆記:拍照或相簿選取圖片角度問題