Tengo problemas con BitmapFactory.decodeStream(inputStream)
. Al usarlo sin opciones, devolverá una imagen. Pero cuando lo uso con opciones como en .decodeStream(inputStream, null, options)
, nunca devuelve Bitmaps.BitmapFactory.decodeStream devuelve nulo cuando se establecen las opciones
Lo que intento hacer es reducir la resolución de un mapa de bits antes de que realmente lo cargue para ahorrar memoria. He leído algunas buenas guías, pero ninguna usando .decodeStream
.
funciona bien
URL url = new URL(sUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream is = connection.getInputStream();
Bitmap img = BitmapFactory.decodeStream(is, null, options);
no funciona
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);
¿Cuál es el resultado de su instrucción System.out.println ("Samplesize:" ...)? ¿Indica que options.inSampleSize es un valor aceptable? –
Sí, devuelve un valor aceptable cada vez. –
Se ha eliminado la declaración debido a que se está depurando. –