如何获取以KB为单位的字节数组中保存的图像的大小

时间:2012-03-24 19:49:15

标签: java android

我想找出以KB为单位的字节数组中保存的图像的大小

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.mPicture);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object   
byte[] b = baos.toByteArray();

以下日志显示 11.7KB 的图像的两种不同结果:

Log.d(TAG, "bm size: " + bm.getByteCount()/1024); // 942
Log.d(TAG, "baos size: " + baos.size()/1024); // 81
Log.d(TAG, "byte size: " + b.length/1024); // 81

哪个是正确的结果,或者我如何得到正确的结果?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:9)

bm.getByteCount()/1024 // 942是图片的原始尺寸

baos.size()/1024 // 81是图像压缩后的大小

第一个给出位图的大小,它表示原始图像资源,但接下来的两个给出了流的大小或表示压缩的字节数组。所以第一个返回的值比接下来的两个更大。