Mam problemy z BitmapFactory.decodeStream(inputStream)
. Używając go bez opcji, zwróci obraz. Ale kiedy używam go z opcjami, ponieważ .decodeStream(inputStream, null, options)
nigdy nie zwraca bitmap.
To, co próbuję zrobić, to zmniejszyć próbkowanie mapy bitowej, zanim faktycznie ją załaduję, aby zaoszczędzić pamięć. Przeczytałem kilka dobrych przewodników, ale żaden nie używa .decodeStream
.
DZIAŁA WYJĄTKOWO DOBRZE
URL url = new URL(sUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream is = connection.getInputStream();
Bitmap img = BitmapFactory.decodeStream(is, null, options);
NIE DZIAŁA
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);