2017-02-09 3 views
0

Je suis confronté à un problème étrange sur mon application android. J'ai un écran d'appareil photo personnalisé pour prendre des photos de documents.BitmapFactory décodeByteArray crop Image

Comme vous pouvez le voir sur les photos, l'image sauvegardée de Galaxy S4 (Android 5.0.1) est identique à celle de l'appareil photo, mais dans Galaxy S7 (Android 6.0.1), l'image est rognée de haut en bas.

S4 écran de la caméra

S4 Camera Screen

S4 Résultat image

S4 Result Image

S7 écran de la caméra

S7 Camera Screen

S7 Résultat Image

S7 Result Image

Mes connexes blocs de code sont; "onPictureTaken"

@Override 
public void onPictureTaken(byte[] data, Camera camera) { 

    if (data == null) { 
     return; 
    } 

    Bitmap bmp = Tools.getBitmap(data); 

    super.onBackPressed();   
} 

"GetBitmap"

public class Tools { 
/*.....*/ 
    public static Bitmap getBitmap(byte[] data){ 
/*.....*/ 
     Bitmap unscaledBitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 

     return unscaledBitmap; 
    } 
} 

Quelqu'un peut-il expliquer pourquoi cela pourrait être?

Merci à l'avance

+1

Je crois que cela se produit parce que la résolution de l'aperçu des caméras est différente de sa sortie résolution. –

Répondre

0

Je ne me regarde pas cette image S4 est identique à l'écran, il y a zone grise en bas et à gauche. Fondamentalement, si vous rognez une image différente de votre ration d'écran, l'image ne remplira pas tout l'écran. Vous pouvez ensuite afficher un espace vide (cette zone grise que vous montrez) ou le recadrer au centre, ce qui coupe les côtés de votre image.

1

après beaucoup d'essais, j'ai trouvé son sur la taille de l'image de sortie comme Naveen mentionné ci-dessus et résolu avec setPictureSize()

Camera.Size size=getBestPreviewSize(display.getHeight(), display.getWidth(), parameters); 
parameters.setPreviewSize(size.width, size.height); 
parameters.setPictureSize(size.width, size.height); 
this.camera.setParameters(parameters);