Front face à la caméra dans UIImagePickerController
Je suis en train d'élaborer l'avant face à la caméra app dans iPad2 à l'aide de la UIImagePickerController
.
Quand je capture l'image c'est la montre que basculé de gauche à droite.
Comment puis-je corriger cela?
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
UIImagePickerController *imgPkr = [[UIImagePickerController alloc] init];
imgPkr.delegate = self;
imgPkr.sourceType = UIImagePickerControllerSourceTypeCamera;
imgPkr.cameraDevice=UIImagePickerControllerCameraDeviceFront;
UIImageView *anImageView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"select%d.png",val]]];
anImageView.frame = CGRectMake(0, 0, anImageView.image.size.width, anImageView.image.size.height);
imgPkr.cameraOverlayView = anImageView;
[theApp.TabViewControllerObject presentModalViewController:imgPkr animated:YES];
[imgPkr release];
}
- pourquoi ma question est été voté!
- REMARQUE dans iPhone - la plupart des versions - vous semblez vous obtenez automatiquement le flash et d'avant en arrière boutons. (Peut dépendre légèrement sur l'iOS sous-version.) C'est seulement sur l'iPad où vous semblez avoir besoin de l'ajouter manuellement. Je viens de perdre du temps avec soin le développement d'un bouton, que j'ai été le tester sur un iPadMini plutôt qu'un iPhone 🙂
Vous devez vous connecter pour publier un commentaire.
Vous pouvez inverser l'image à partir de la source de l'image utilisez cette
Edit: Ajouté swift code
J'ai eu le même problème et la solution ci-dessus ne m'a fait la moitié de la réponse, car l'utilisateur doit approuver le miroir de l'image avant de passer à la page suivante de mon app - où-je utiliser l'image capturée après retournement.
Pour résoudre cela, j'ai eu à inverser la vue de la caméra à chaque fois que je passe à l'avant face à la caméra:
Juste d'élargir cette grande réponse, quelques exemples de code complet, Dec2013, iOS7 /Xcode5. S'occupe de tout. Vous avez juste besoin d'une icône (cameraToggle.PNG dans l'exemple).
Que les autres réponses, j'ai eu le même problème. Comme Yonathan Betzer mentionné, il suffit de retourner l'image finale est seulement la moitié de la réponse, parce que l'aperçu de l'image, affichée par le UIPickerController lorsque vous prenez une photo avec la caméra frontale, elle est toujours à l'envers (le miroir).
Yonatan Betzer anwser fonctionne très bien, mais il n'a pas dit comment, ni où mettre l'action pour changer la caméra de l'appareil.
Basée à certains codes à partir d'internet, j'ai créé un module pour obtenir ce comportement voulu:
https://github.com/lucasecf/LEMirroredImagePicker
Après avoir installé, vous avez juste à appeler ces deux lignes de code avec votre
UIImagePickerController
:Et c'est tout, simplement comme ça. Vous pouvez consulter pour plus d'informations dans le fichier lisez-moi du lien github.
Juste pour ajouter que j'ai accompli ce sans sous-classement UIImagePickerController et sans ajout de boutons de la vue de la caméra.
Simplement à l'écoute de cette notification qui en est tiré à plusieurs reprises à chaque fois que la caméra est modifié:
Puis utilisez cette méthode pour inverser la vue de la caméra:
Je sais que cette question est vraiment vieux, mais il semble que c'est un toujours un problème commun. Il suffit de mettre un
CGAffineTransform
sur lecameraViewTransform
propriété sur unUIImagePickerController
objet.Mise à jour "bandog" réponse rapide 4
Plein d'Exemple dans Swift, qui répond à la question initiale de ce post (testé sur un iPhone 5c de l'utilisation d'iOS 8.2):
Il ressemble
AVCaptureDeviceDidStartRunningNotification
n'est plus disponible en tant que des moyens de détection de la caméra de l'appareil changements. Aussi, lecameraDevice
bien surUIImagePickerController
ne fonctionne pas avec KVO. Cependant, il est toujours possible de détecter caméra dispositif de modifications, comme indiqué ci-dessous (même si le soutien à long terme pour cette solution n'est pas garanti que nous utilisons KVO sur une propriété qui n'est pas explicitement marqué comme KVO-conforme).