Saya mengalami masalah dengan BitmapFactory.decodeStream(inputStream)
. Saat menggunakannya tanpa opsi, itu akan mengembalikan gambar. Tetapi ketika saya menggunakannya dengan opsi seperti di .decodeStream(inputStream, null, options)
dalamnya tidak pernah mengembalikan Bitmap.
Apa yang saya coba lakukan adalah men-downsample Bitmap sebelum saya benar-benar memuatnya untuk menghemat memori. Saya telah membaca beberapa panduan bagus, tetapi tidak ada yang menggunakan .decodeStream
.
KARYA HANYA HALUS
URL url = new URL(sUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream is = connection.getInputStream();
Bitmap img = BitmapFactory.decodeStream(is, null, options);
TIDAK BEKERJA
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);