2016-10-27 1 views
0

J'envoie des images au serveur à l'aide de Volley. Voici mon code pour compresser et convertir des bitmaps en octets. Je veux envoyer des images en taille réelle, si je spécifie bmp=Bitmap.createScaledBitmap(bmp,500,400, true) images sont étirées.Publication d'images sur le serveur, mais la taille est très petite

public String getStringImage(Bitmap bmp) { 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
    byte[] imageBytes = baos.toByteArray(); 
    String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); 
    return encodedImage; 
} 

C'est la taille que je reçois sur le serveur, il est vraiment petit:

image

Voici le code qui envoie au serveur:

@Override 
protected Map<String, String> getParams() throws AuthFailureError { 
    Map<String,String> params = new Hashtable<String, String>(); 
    for(int i=0; i<bitmapArray.size(); i++){ 
     Log.d("size of array is",String.valueOf(bitmapArray.size())); 
     params.put("image"+(i+1),getStringImage(bitmapArray.get(i))); 
     params.put("name"+(i+1), "name"+(i+1)); 
    } 
    return params; 
} 
+0

Assurez-vous que le Bitmap vous passez à 'getStringImage' n'est pas déjà compressé ou taille réduite – Leo

+0

Je pense que vous utilisez le Bitmap provenant de la' onActivityResult 'Ce qui n'est pas le bon choix. – Enzokie

Répondre

0

si vous en utilisant l'image bitmap retournant l'application Camera Intention sans passer aucun fichier url ou uri comme ci-dessous, il ne retournera qu'une image bitmap image qui est une image de faible qualité de petite taille taille, donc si vous redimensionnez, il semblera streched.

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); 

Pour obtenir une image complète de la qualité, vous devez fournir à l'intention de la caméra un chemin de fichier dans le supplément, de sorte que l'application de la caméra va enregistrer l'image là-bas, plus tard sur onActivityResult vous devriez lire l'image à partir du chemin du fichier et convertir cela en bitmap, ce sera une image de qualité complète. Veuillez vous assurer que le chemin de fichier ou l'uri que vous fournissez à l'application camera dispose des autorisations nécessaires. Si vous utilisez l'autorisation de stockage externe dans votre application, ce sera facile, sinon vous pouvez donner l'autorisation à l'application appareil photo.

Voici un tel échantillon je l'ai fait pour mon travail - https://github.com/santbob/AppPrivateImageUpload