Xamarin開發Android筆記:拍照或相簿選取圖片角度問題

來源:互聯網
上載者:User

標籤:

在開發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筆記:拍照或相簿選取圖片角度問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.