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;
}
Avez-vous essayé d'envoyer votre image en tant que codage String 64 bits? – Eenvincible
Placez le fichier image dans un tableau d'octets sans utiliser de bitmap intermédiaire. – greenapps
@greenapps vous pouvez ajouter ce commentaire comme réponse. –