setRotation(90) pour prendre la photo en mode portrait ne fonctionne pas sur les appareils samsung

Selon la documentation, setRotation(90) doit tourner la capture d'image JPEG (takePicture en mode paysage.

Cela fonctionne très bien sur un téléphone HTC, mais ne fonctionne pas sur Samsung Google Nexus S et le Samsung Galaxy S3. Est-ce un bug?

Je sais que je peux utiliser la transformation de matrice de rotation, mais souhaite que le système d'exploitation peut le faire plus efficacement, et vous ne voulez pas de risque de sur-rotation sur certains autres appareils.

modifier

Réglage camera.setDisplayOrientation(90); fait la prévisualisation en mode portrait, il n'a toutefois pas avoir une incidence sur l'image prise.

En outre, en plus de setRotation, j'ai également essayé de définir la taille de l'image - où je flip h avec w: parameters.setPictureSize(1200, 1600);. Cela aussi n'avoir aucun effet.

solution

Apparemment les téléphones Samsung définir la balise EXIF, plutôt que de la rotation de chacun des pixels. Comme ariefbayu suggéré, la lecture de l'image Bitmap à l'aide BitmapFactory ne prend pas en charge cette balise. Son exemple de code est la solution, et cette solution est également compatible avec l'utilisation de inSampleSize.

  • voyez-vous des erreurs?
  • Découvrez cette réponse car elle pourrait aider: stackoverflow.com/questions/3841122/...
  • pas - je ne vois pas d'erreur via l'android console.
  • la réponse des préoccupations aperçu sur une surface. Ma question est au sujet de prendre une photo
  • Je pense que cela peut avoir un effet sur les photos prises ainsi, mais c'était il y a longtemps et c'était sur un HTC.
  • Réglage de la caméra.setDisplayOrientation(90); fait la prévisualisation en mode portrait, il n'a toutefois pas avoir une incidence sur l'image prise.
  • Je pense que vous parlez de l'effet de la balise Exif.
  • Oui, je pense que c'est lié. J'ai lu à ce sujet sur la documentation de setRotation. De ce que j'ai compris il n'y a que le jpeg est un moyen de "marquer" l'image comme une rotation, plutôt que de la rotation de pixels individuels. Et que certains matériels peuvent décider de faire pivoter les pixels, alors que d'autres périphériques peuvent décider de juste mettre cette balise Exif. Pensez-vous que Samsung NE mettre cette balise exif, mais l'Android Bitmap ne prend pas en charge cette balise? J'utilise le code suivant pour lire l'image (pour vérifier que l'orientation est correcte): Bitmap bitmap = BitmapFactory.decodeFile(url);
  • comme je le comprends, de jouer avec les images Bitmap et de la caméra. Classe Bitmap ne supporte pas la balise Exif. Mais, j'ai peut-être tort. Besoin de lire la documentation (qui, je n'ai pas le temps, pour l'instant).
  • check this out stackoverflow.com/a/26141254/1118886

InformationsquelleAutor tofi9 | 2012-06-13