我想找出以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
哪个是正确的结果,或者我如何得到正确的结果?任何帮助表示赞赏。
答案 0 :(得分:9)
bm.getByteCount()/1024 // 942
是图片的原始尺寸
baos.size()/1024 // 81
是图像压缩后的大小
第一个给出位图的大小,它表示原始图像资源,但接下来的两个给出了流的大小或表示压缩的字节数组。所以第一个返回的值比接下来的两个更大。