Pergunta

Estou recebendo resultados inconsistentes, dependendo se eu obter a imagem diretamente da câmera no retorno de chamada ou escolhendo-a no rolo da câmera.

No método UIImagePickerControllerDelegate callback, o UIImage.imageOrientation surge como UIImageOrientationRight não importa como a foto é tirada.

Ao lê-lo fora do Camera Roll, um tiro paisagem (virou à esquerda) surge UIImageOrientationUp enquanto um retrato surge UIImageOrientationRight.

Como posso obter de forma confiável a orientação da câmara em ambas as situações?

Foi útil?

Solução

Eu postei isso para os fóruns da Apple, e tem a explicação:

"A câmera é realmente nativa paisagem, de modo a obter-se ou para baixo quando você tira uma foto na paisagem e para a esquerda ou para a direita quando você tirar uma foto no retrato (dependendo de como você segure o dispositivo)."

Veja:

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

Graças:

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

Outras dicas

Eu tentei a propriedade imageOrientation após a foto foi tirada, é engraçado porque eu tenho os valores de orientação desarrumada. Up é Esquerda, Baixo é Direita, Esquerda é baixo e à direita é para cima, por exemplo, se eu segurar o iPhone "Up" (posição normal), então 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;
     }
}

Atualmente estou usando 4.1 SDK GM (xcode_3.2.4_and_ios_sdk_4.1_gm_seed) direcionando para iOS 3.1

Eu li algum lugar que o UIImagePickerController não liga ouvir eventos de orientação hardware, assim você pode precisar chamar

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

antes de capturar imagens em seu próprio aplicativo. Estou prestes a ir tentar testar isso mesmo, então eu espero que funcione!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top