BitmapFactory.decodeFile返回的图像大小比原始图像大

时间:2016-04-21 16:07:41

标签: android image bitmap

我是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);
}

1 个答案:

答案 0 :(得分:1)

磁盘上图像的大小与内存中图像的大小无关。 PNG,JPEG和GIF图像在磁盘上压缩。在记忆中,它们是未压缩的。