J'ai des problèmes avec BitmapFactory.decodeStream(inputStream)
. Lorsque vous l'utilisez sans options, il renverra une image. Mais quand je l'utilise avec des options car .decodeStream(inputStream, null, options)
il ne renvoie jamais de Bitmaps.
Ce que j'essaie de faire, c'est de sous-échantillonner un Bitmap avant de le charger pour économiser de la mémoire. J'ai lu quelques bons guides, mais aucun n'utilise .decodeStream
.
Fonctionne très bien
URL url = new URL(sUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream is = connection.getInputStream();
Bitmap img = BitmapFactory.decodeStream(is, null, options);
NE FONCTIONNE PAS
InputStream is = connection.getInputStream();
Bitmap img = BitmapFactory.decodeStream(is, null, options);
InputStream is = connection.getInputStream();
Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(is, null, options);
Boolean scaleByHeight = Math.abs(options.outHeight - TARGET_HEIGHT) >= Math.abs(options.outWidth - TARGET_WIDTH);
if (options.outHeight * options.outWidth * 2 >= 200*100*2){
// Load, scaling to smallest power of 2 that'll get it <= desired dimensions
double sampleSize = scaleByHeight
? options.outHeight / TARGET_HEIGHT
: options.outWidth / TARGET_WIDTH;
options.inSampleSize =
(int)Math.pow(2d, Math.floor(
Math.log(sampleSize)/Math.log(2d)));
}
// Do the actual decoding
options.inJustDecodeBounds = false;
Bitmap img = BitmapFactory.decodeStream(is, null, options);