我是Android编程新手。我试图使用ImageView
将设备的SD卡上的图像显示在BitmapFactory.decodeFile(imagePath)
上。我可以从SD卡读取图像,跟随official documentation to loading bitmaps efficiently。虽然我无法理解的一点是,为什么返回的位图的大小远大于原始大小?原始图像大小为84.32 kb,我得到的位图大小为4.096 mb。我试图加载位图与图像的高度和宽度,即1280x800。如果我在下面的方法中减小图像的宽度和高度,我会减小尺寸。但是为什么我不能用原始大小和实际宽度和高度在位图中加载图像?
方法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);
}
答案 0 :(得分:1)
磁盘上图像的大小与内存中图像的大小无关。 PNG,JPEG和GIF图像在磁盘上压缩。在记忆中,它们是未压缩的。