2017-05-11 7 views
0

Je souhaite afficher un aperçu en en plein écran en utilisant camera2 api. La taille de la caméra que j'ai sélectionnée est 4160x3120 (16: 9) et mon écran est 1080x1920 (9:16). Par conséquent, si je veux l'aperçu à droite échelle, je dois recadrer la sortie de la caméra:L'aperçu de Camera2 a été étiré lors du recadrage avec SCALER_CROP_REGION

Rect zoomCrop = new Rect(0, 0, 1755, 3120); 
captureRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, zoomCrop); 

Le recadrée aperçu devrait être de taille 1755x3120 qui a un rapport de 9:16 ainsi. Toujours l'aperçu est streched.

Question: Ai-je utilisé SCALER_CROP_REGION à droite? Si non, comment suis-je censé l'utiliser?

Merci à l'avance

Répondre

1

On dirait que vous obtenez une image de paysage et de l'afficher dans une vue portrait - cela signifie que vous aurez des lignes « de boîte aux lettres » ci-dessus et au-dessous de l'image si vous voulez éviter la distorsion .

Si vous vouliez remplir l'écran, et ne pas avoir de distorsion ou les lignes de la boîte à piliers, vous devez accepter qu'une partie de votre image ne sera pas visible, car elle est en dehors de la zone de vision.

SCALER_CROP_REGION est difficile à comprendre sans schémas - j'ai trouvé la meilleure explication pour être dans la documentation source Andoir ici: https://source.android.com/devices/camera/camera3_crop_reprocess

Un schéma reproduit à partir de cette aide à titre d'exemple ici - la raison de point fort est de montrer comment les coordonnées sont utilisées. Si vous regardez votre région de culture, elle sera biaisée vers le haut à gauche en commençant à (0,0), ce dont je ne suis pas sûr est ce que vous voulez vraiment.

enter image description here

+0

Oui, c'est pétantes ce que je veux faire yo, « cacher » une partie de l'image. Je pensais que l'utilisation de scaler_crop_region l'aurait fait automatiquement mais apparemment pas ... Savez-vous comment cacher une partie de l'image pour afficher l'aperçu en plein écran? –

+1

Camera2 semble avoir un certain nombre de questions ouvertes et de problèmes liés à l'orientation (par exemple, http: //stackoverflow.com/q/33479004/334402). On dirait que vous voulez que votre application soit utilisée en mode portrait mais pour enregistrer en mode paysage. Je devine que la distorsion se produit parce que vous «remplissez» la vue avec une image qui n'est pas le même aspect que la vue. avez-vous utilisé l'affichage – Mick