Pregunta

Me estoy resultados inconsistentes dependiendo de si tengo la imagen directamente desde la cámara en la devolución de llamada o seleccionándolo en el rollo de la cámara.

En el método de devolución de llamada UIImagePickerControllerDelegate, la UIImage.imageOrientation hará como una UIImageOrientationRight no importa cómo se tomó la foto.

Cuando se lee fuera de la Lista de Cámara, un disparo de paisaje (girado a la izquierda) aparece UIImageOrientationUp mientras que un retrato aparece UIImageOrientationRight.

¿Cómo puedo obtener de forma fiable la orientación de la cámara en ambas situaciones?

¿Fue útil?

Solución

He publicado esto a los foros de Apple, y tengo la explicación:

"La cámara es en realidad nativa paisaje, por lo que obtener arriba o hacia abajo cuando se toma una foto en el paisaje ya la izquierda o hacia la derecha cuando se toma una fotografía de retrato (dependiendo de cómo se sostenga el dispositivo)."

Ver:

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

Gracias:

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

Otros consejos

He tratado de la propiedad imageOrientation después de que el cuadro se ha tomado, es curioso porque tengo los valores de orientación en mal estado. Hasta es Izquierda, Abajo es Derecha, Izquierda y Derecha es abajo es arriba, por ejemplo, si tengo el iPhone "arriba" (la posición normal), entonces es imageOrientation "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;
     }
}

Actualmente estoy usando 4.1 SDK GM (xcode_3.2.4_and_ios_sdk_4.1_gm_seed) de orientación para iOS 3.1

He leído algún lugar que el UIImagePickerController no se enciende escuchar eventos de orientación de hardware, por lo que puede que tenga que llamar

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

antes de capturar imágenes en su propia aplicación. Estoy a punto de ir a intentar probar esto por mí mismo, por lo que espero que funcione!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top