2009-05-25 4 views
1

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

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

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

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

+0

Я нашел несколько связанных ссылку http://mohrt.blogspot.com/2009/05/camera-image-orientation.html и я знаю код scaleAndRotateImage http://blog.logichigh.com/2008/06/05/uiimage-fix/ ... но и не объясняю, почему я могу получить неправильную информацию об изображенииОбратим непосредственно от изображения, переданного в от обратного вызова. –

+0

У меня такая же проблема. Например, imageOrientation 3 (UIImageOrientationRight, 90 градусов CW, согласно яблочным документам), когда у меня есть iphone в вертикальном положении, и это 0 (UIImageOrientationUp), когда он повернут влево (должно быть, UIImageOrientationRight, я считаю). Вы нашли решение? – Brenden

+0

Я не нашел решение, но я хотел проверить, что OS 3.0 исправляет это. –

ответ

3

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

«Камера на самом деле является ландшафтом, поэтому вы поднимаетесь или опускаетесь, когда вы делаете снимок в ландшафте и слева или справа, когда вы делаете снимок на портрете (в зависимости от того, как вы держите устройство) ».

См:

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

спасибо:

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

-1

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

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 

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

+0

Фактически синтаксис, который вы имели в виду, это: [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; –

+0

спасибо - исправлено сейчас –

+0

Это не помогло мне. –

0

Я попробовал свойство imageOrientation после того, как фотография была сделана, это смешно, потому что у меня значения ориентации перепутаны. Вверх слева, Вниз справа, Влево и Вправо вверх, например, если я держу iPhone «Вверх» (нормальное положение), тогда изображениеОриентация «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) ориентацией для прошивки 3.1

+1

У вас была радость, просто взломавшая это обращение? –