Je vais avoir des problèmes avec BitmapFactory.decodeStream(inputStream)
. Lors de l'utilisation sans options, il sera de retour d'une image. Mais quand je l'utilise avec des options comme en .decodeStream(inputStream, null, options)
il ne revient jamais d'images.
Ce que j'essaie de faire est de sous-échantillonner une image Bitmap avant que je le charge pour économiser de la mémoire.
J'ai lu quelques guides de bonnes, mais aucun à l'aide de .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);