Xamarin формы: jamesmontemagno / MediaPlugin: выбранный рисунок вращается при добавлении в пользовательский интерфейс в приложении IOS - PullRequest
0 голосов
/ 24 ноября 2018

Я подписался на этот блог для фотографирования из галереи и камеры.Но выбранное изображение отображается в повернутом вправо виде, когда дело доходит до пользовательского интерфейса в IOS. Проблема возникает только при использовании камеры, и у меня нет проблем с галереей. Эта функция работает нормально в Android и UWP.

Скриншот добавлен ниже:

enter image description here

Код камеры:

async void CameraClick()
        {
            try
            {
                await CrossMedia.Current.Initialize();
                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    await DisplayAlert("Camera", "No camera available.", "OK");
                    return;
                }
                _mediaFile = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    Directory = "Sample",
                    Name = "test.jpg",
                    AllowCropping = true
                });
                if (_mediaFile == null)
                    return;
                profileImage.Source = ImageSource.FromStream(() =>
                {
                    isPicture = true;
                    return _mediaFile.GetStream();
                });
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("Exception:>" + ex);
            }
        }

Устройство: IOS SE

Версия медиа-плагина: 3.1.1

Элемент управления, который я использую для отображения изображения: Xam.plugins.Forms.Imagecircle 2.0.2 (Для Android и UWP я использую 1.8.1)

Галерея изображений работает нормально, и проблема заключается только в том, чтобы делать снимки с помощью камеры.Нет проблем в Android и UWP части.

1 Ответ

0 голосов
/ 26 ноября 2018

Причина:

Это обычный опыт даже за пределами Xamarin.Это вызвано iOS.

UIImage имеет свойство imageOrientation, которое инструктирует UIImageView и других пользователей UIImage вращать необработанные данные изображения.Есть большая вероятность, что этот флаг сохраняется в данных exif в загруженном jpeg-изображении, но программа, которую вы используете для его просмотра, не поддерживает этот флаг.

Решение:

В части Issues в jamesmontemagno/MediaPlugin в Github есть несколько проблем, например, проблема, с которой вы столкнулись.Кажется, использование GetStreamWithImageRotatedForExternalStorage решит эту проблему.

Вы можете обратиться к: https://github.com/jamesmontemagno/MediaPlugin/issues/333

Другим способом, вы можете повернуть изображение самостоятельно.

Вот некоторыессылки, которые могут вам помочь:

Ориентация изображения iOS имеет странное поведение

iOS UIImagePickerController ориентация изображения результата после загрузки

iOS: изображение поворачивается на 90 градусов после сохранения в виде данных представления PNG

...