web-dev-qa-db-fra.com

Comment empêcher Android d'inverser l'image de la caméra faisant face à l'avant?

Ma caméra vidéo enregistre en mode paysage, mais la caméra orientée vers l'avant affiche l'image normale, mais l'enregistrement réel est inversé (inversé ou inversé) sur l'axe.

Tout fonctionne bien sur une caméra arrière normale.

Quelqu'un peut-il me suggérer un moyen de l'éviter? Toute suggestion ou code source aiderait beaucoup. Je vous remercie.

14
Meghal Shah

La mauvaise nouvelle : cette mise en miroir est codée en dur dans le service de caméra et ne peut pas être désactivée.

La bonne nouvelle : si vous utilisez une API récente (niveau d'API> = 14), vous pouvez facilement utiliser un TextureView pour refléter l'image d'aperçu sur l'original. Prenez l'exemple TextureView sur la documentation Android, puis utilisez setTransform pour définir une transformation en miroir. Cela ramènera l'aperçu de l'image à l'original non mis en miroir.

Notez qu'une transformation miroir est identique à une transformation de mise à l'échelle avec une échelle -1 sur l'axe X.

Si vous utilisez une ancienne version de l'API, vous pourrez peut-être faire de même avec une SurfaceView (en utilisant setScaleX , niveau de l'API> = 11).

10
Paul-Jan

Essayez d'appliquer une matrice de transformation à un TextureView. Conformément à Évitez de faire basculer la caméra faisant face à l'avant

Cela fonctionne pour le niveau API> = 14

2
Steve