Xamarin 개발 안드로이드 노트: 사진이나 앨범 선택 그림 각도 문제

6801 단어 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             try

11             {

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);

                    }

이제 어떻게 처리하느냐는 자신의 필요에 달려 있다.

좋은 웹페이지 즐겨찾기