Я новичок в программировании на Android. Я пытался отобразить изображение с SD-карты моего устройства на ImageView
, используя BitmapFactory.decodeFile(imagePath)
. Я могу читать изображение с SD-карты, а затем official documentation to loading bitmaps efficiently. Хотя одна вещь, которую я не могу понять, - это то, почему возвращенный битмап намного больше размера, чем оригинальный размер? Исходный размер изображения был 84.32 kb, растровое изображение, которое я получил, было размером 4.096 mb. Я пытался загрузить растровое изображение с высотой и шириной изображения, то есть 1280x800. Если я уменьшу ширину и высоту изображения в приведенном ниже методе, я получаю уменьшенный размер. Но почему я не могу загрузить изображение в растровое изображение с его первоначальным размером и фактической шириной и высотой?BitmapFactory.decodeFile возвращает изображение с большим размером, чем оригинал
Метод decodeSampledBitmap():
public static Bitmap decodeSampledBitmap(String path,
int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
//BitmapFactory.decodeResource(res, resId, options);
BitmapFactory.decodeFile(path, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
//return BitmapFactory.decodeResource(res, resId, options);
return BitmapFactory.decodeFile(path, options);
}
"Размер оригинального изображения был 84.32 kb" - как вы это определяете? Например, это размер изображения на диске? «растровое изображение, которое я получил, имеет размер 4.096 мб» - как вы это определяете? – CommonsWare
да размер на диске был 84.32 kb, а размер растрового изображения, который я получил, был с помощью метода bitmap.getByteCount(). –