如何获取位图的大小(以 KB 为单位)



>我正在尝试在 firebase 存储中上传图像,我希望图像不应大于 50 kb 我正在尝试获取位图的大小,以便我可以知道位图的大小是否超过 50 kb 图库的图像不会显示 我尝试了许多许多人建议的代码,但没有一个对我有用。请帮助我解决这个问题。这是我的代码:

@Override
protected void onActivityResult( int requestCode , int resultCode , @Nullable Intent data )
{
super.onActivityResult (requestCode , resultCode , data);
if(requestCode == ChooseImage && resultCode == RESULT_OK && data != null && data.getData() != null){
userProfileImage = data.getData ();
try {
Bitmap bitmap=MediaStore.Images.Media.getBitmap (getContentResolver ( ) , userProfileImage);       
if (bitmap.getHeight () * bitmap.getRowBytes () < 50000)
profile_photo.setImageBitmap (bitmap);
btn.setOnClickListener (new View.OnClickListener ( ) {
@Override
public void onClick( View v ) {
uploaImage ();
}
});

} catch (IOException e) {
e.printStackTrace ( );
Toast.makeText (this , e.getMessage () , Toast.LENGTH_SHORT).show ( );
}
}
}

试试这段代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
if (requestCode == ChooseImage && resultCode == RESULT_OK && data != null && data.getData() != null) {
userProfileImage = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), userProfileImage);
if (bitmap.getHeight() * bitmap.getRowBytes() < 50000)
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] imageInByte = stream.toByteArray();
long bitmap_size = imageInByte.length / 1024; 
profile_photo.setImageBitmap(bitmap);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
uploaImage();
}
});

} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}

长变量bitmap_size将为您提供以 KB 为单位的图像大小

您可以使用此代码获取以 KB 为单位的大小:

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 
byte[] imageInByte = stream.toByteArray(); 
long sizeInKB = imageInByte.length / 1024;    //Size in KB

谢谢。

最新更新