我已经搜索过了,发现api小于12,通常使用的是bitmap.getrowbytes * bitmap.getheight;。

但是,对于图像,我将获得以下内容:

mBitmap.getRowBytes() = 320
mBitmap.getHeight() = 100
mBitmap.getWidth() = 80.


因此,根据以上公式,我得到32,000。

但是,当我检查文件时,我正在使用adb从adb读取位图图像

ls -l


我得到的大小是90Kb。

我正在读取图像,如下所示:

        Uri chosenImageUri = data.getData();
        if (chosenImageUri != null) {
            try {
       InputStream photoStream = getContentResolver().openInputStream(chosenImageUri);
          BitmapFactory.Options opts = new BitmapFactory.Options();
              opts.inSampleSize = 4;
              Bitmap mBitmap = BitmapFactory.decodeStream(photoStream,null, opts);
          photoStream.close();

}
}


为什么结果不同?谢谢。

最佳答案

好的,我只是了解发生了什么。如果有任何帮助,我将予以发布。

这是因为我正在使用bitmapfactoryoptons以及insamplesize = 4。

发生的是

例如,inSampleSize == 4返回的图像为原始宽度/高度的1/4,像素数目的1/16。任何
here所述

08-16 19:19