Определение ориентации камеры iPhone
-
05-09-2019 - |
Вопрос
Я получаю противоречивые результаты в зависимости от того, получаю ли я изображение непосредственно с камеры при обратном вызове или выбираю его из фотопленки.
В UIImagePickerControllerDelegate
метод обратного вызова, the UIImage.imageOrientation
появляется как UIImageOrientationRight
независимо от того, как сделана фотография.
При считывании с фотопленки появляется пейзажный снимок (повернутый влево). UIImageOrientationUp
в то время как появляется портретный снимок UIImageOrientationRight
.
Как я могу надежно определить ориентацию камеры в обеих ситуациях?
Решение
Я опубликовал это на форумах Apple и получил объяснение:
"На самом деле камера настроена на работу в альбомной ориентации, поэтому вы поднимаетесь или опускаетесь, когда делаете снимок в альбомной ориентации, и влево или вправо, когда делаете снимок в портретной ориентации (в зависимости от того, как вы держите устройство)".
Видишь:
https://devforums.apple.com/message/301160#301160
Спасибо:
Другие советы
Я попробовал свойство 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];
перед тем, как вы сделаете снимок в своем собственном приложении.Я собираюсь пойти попробовать протестировать это сам, так что я надеюсь, что это сработает!