BitmapFactory.decodeStream(is, rect, options) renvoie null
La suite de mon aventure :
Voici un bout de code,
Code:
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:
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.