La suite de mon aventure :

Voici un bout de code,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public void setImage(ImageView aView, URL aURL) {
 
try {
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
// Bufferisation pour le téléchargement
BufferedInputStream bis = new BufferedInputStream(is, 8192);
 
// Création de l'image depuis le flux des données entrant
Bitmap bm = BitmapFactory.decodeStream(bis);
 
bis.close();
is.close();
 
// Fixe l'image sur le composant ImageView
aView.setImageBitmap(bm);
 
} catch (IOException e) {
aView.setImageDrawable(mNoImage);
Log.e("DVP Gallery", "Erreur téléchargement image URL : " + aURL.toString());
e.printStackTrace();
}
 
}
qui marche bien. Maintenant je veux ajouter ce code pour réduire la taille des bm,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(bis, null, options);
 
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, 120, 120);
// la fonction calculateInSampleSize est ok
 
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
rect.set(1, 1, options.outWidth-1, options.outHeight-1);
Bitmap bm = BitmapFactory.decodeStream(bis, rect, options);
qui me renvoie null pour le bm. J'ai essayé avec null à la place de rect mais c'est pareil.

Une idée ? Merci.

PS: cette méthode fonctionne très bien avec les fichiers de la SDCard en utilisant BitmapFactory.decodeFile(), et j'essaie de l'adapter pour les stream avec URL.