iPhone detecção de orientação da câmera
-
05-09-2019 - |
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?
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:
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!