Вопрос

Я получаю противоречивые результаты в зависимости от того, получаю ли я изображение непосредственно с камеры при обратном вызове или выбираю его из фотопленки.

В UIImagePickerControllerDelegate метод обратного вызова, the UIImage.imageOrientation появляется как UIImageOrientationRight независимо от того, как сделана фотография.

При считывании с фотопленки появляется пейзажный снимок (повернутый влево). UIImageOrientationUp в то время как появляется портретный снимок UIImageOrientationRight.

Как я могу надежно определить ориентацию камеры в обеих ситуациях?

Это было полезно?

Решение

Я опубликовал это на форумах Apple и получил объяснение:

"На самом деле камера настроена на работу в альбомной ориентации, поэтому вы поднимаетесь или опускаетесь, когда делаете снимок в альбомной ориентации, и влево или вправо, когда делаете снимок в портретной ориентации (в зависимости от того, как вы держите устройство)".

Видишь:

https://devforums.apple.com/message/301160#301160

Спасибо:

https://devforums.apple.com/people/Rincewind

Другие советы

Я попробовал свойство imageOrientation после того, как снимок был сделан, это забавно, потому что я перепутал значения ориентации.Up - влево, Down - вправо, Left - вниз и Right - Вверх, например, если я держу iPhone "Up" (нормальное положение), то ориентация изображения - "UIImageOrientationRight".

- (void)imagePickerController:(UIImagePickerController *)picker
  didFinishPickingImage:(UIImage *)image
      editingInfo:(NSDictionary *)editingInfo {
    switch (image.imageOrientation) {
      case UIImageOrientationUp: //Left
       break;
      case UIImageOrientationDown: //Right
       break;
      case UIImageOrientationLeft: //Down
       break;
      case UIImageOrientationRight: //Up
       break;
      default:
       break;
     }
}

В настоящее время я использую 4.1 SDK GM (xcode_3.2.4_and_ios_sdk_4.1_gm_seed), предназначенный для iOS 3.1

Я прочитал где - то что UIImagePickerController не включает прослушивание событий ориентации оборудования, поэтому вам может потребоваться вызвать

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

перед тем, как вы сделаете снимок в своем собственном приложении.Я собираюсь пойти попробовать протестировать это сам, так что я надеюсь, что это сработает!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top