-1

J'essaie de télécharger l'image vers le serveur. Je reçois l'image par le chemin et le convertir en tableau d'octets:Chargement en image de petite taille

BitmapFactory.Options bmOptions = new BitmapFactory.Options(); 
Bitmap picture = BitmapFactory.decodeFile(imagePath, bmOptions); 

MultipartEntityBuilder builder = MultipartEntityBuilder.create(); 
ByteArrayOutputStream bao = new ByteArrayOutputStream(); 

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao); 
byte[] bytes = bao.toByteArray(); 

builder.addPart("uploadedfile", new ByteArrayBody(bytes, "name" + ".jpg")); 

Pour la taille de l'image par exemple est 300kb mais la taille de l'image téléchargée est 800kb.

Comment envoyer une image (sélectionnée par un chemin) sans augmenter sa taille?


Soulution

@greenapps droit. J'ai converti l'image en tant que fichier:

public static byte[] fullyReadFileToBytes(File f) throws IOException { 
    int size = (int) f.length(); 
    byte bytes[] = new byte[size]; 
    byte tmpBuff[] = new byte[size]; 
    FileInputStream fis= new FileInputStream(f);; 
    try { 

     int read = fis.read(bytes, 0, size); 
     if (read < size) { 
      int remain = size - read; 
      while (remain > 0) { 
       read = fis.read(tmpBuff, 0, remain); 
       System.arraycopy(tmpBuff, 0, bytes, size - remain, read); 
       remain -= read; 
      } 
     } 
    } catch (IOException e){ 
     throw e; 
    } finally { 
     fis.close(); 
    } 

    return bytes; 
} 
+0

Avez-vous essayé d'envoyer votre image en tant que codage String 64 bits? – Eenvincible

+1

Placez le fichier image dans un tableau d'octets sans utiliser de bitmap intermédiaire. – greenapps

+0

@greenapps vous pouvez ajouter ce commentaire comme réponse. –

Répondre

1

Placez le fichier image dans un tableau d'octets sans utiliser de bitmap intermédiaire.