我已经搜索过了,发现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所述