Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的位图大小与ADB大小_Java_Android_Image - Fatal编程技术网

Java Android中的位图大小与ADB大小

Java Android中的位图大小与ADB大小,java,android,image,Java,Android,Image,我搜索过这个,发现对于小于12的api,通常使用的是bitmap.getrowbytes*bitmap.getheight 但是,对于图像,我获得以下信息: mBitmap.getRowBytes() = 320 mBitmap.getHeight() = 100 mBitmap.getWidth() = 80. 因此,根据上面的公式,我得到32000 但是,当我检查文件时,我正在使用从adb读取位图图像 ls -l 我知道大小是90Kb 我阅读的图片如下: Uri chos

我搜索过这个,发现对于小于12的api,通常使用的是bitmap.getrowbytes*bitmap.getheight

但是,对于图像,我获得以下信息:

mBitmap.getRowBytes() = 320
mBitmap.getHeight() = 100
mBitmap.getWidth() = 80.
因此,根据上面的公式,我得到32000

但是,当我检查文件时,我正在使用从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();

} 
}

为什么结果不同?谢谢。

映像在RAM上的内存量与磁盘上的内存量不同。在RAM中,如果图像是RGB,则可以通过公式
像素*3
检查图像的内存消耗,如果图像是ARGB,则通过公式
像素*4
检查图像的内存消耗。像素数可以通过
宽度*高度
找到。您的图像必须具有alpha通道,如
80*100*4=32000
。请注意,这是以字节为单位的,要以kB或MB为单位,您需要分别将其除以1024和1024*1024。

好的,我刚刚理解了发生的事情。我会发布这个,以防它对任何人都有帮助

原因是我使用的是bitmapfactoryoptons和insamplesize=4

发生的是

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