Tôi đang gặp vấn đề với BitmapFactory.decodeStream(inputStream)
. Khi sử dụng nó mà không có tùy chọn, nó sẽ trả về một hình ảnh. Nhưng khi tôi sử dụng nó với các tùy chọn như trong .decodeStream(inputStream, null, options)
nó không bao giờ trả về Bitmap.
Những gì tôi đang cố gắng làm là giảm mẫu một Bitmap trước khi tôi thực sự tải nó để tiết kiệm bộ nhớ. Tôi đã đọc một số hướng dẫn tốt, nhưng không sử dụng .decodeStream
.
CÔNG TRÌNH JUST FINE
URL url = new URL(sUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream is = connection.getInputStream();
Bitmap img = BitmapFactory.decodeStream(is, null, options);
KHÔNG LÀM VIỆC
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);