【问题标题】:How to get the size of bitmap in kb如何获取位图的大小(以 kb 为单位)
【发布时间】:2020-04-20 08:25:21
【问题描述】:

我正在尝试在 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 ( );
        }
    }
}

【问题讨论】:

  • 试试 ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, 流); byte[] imageInByte = stream.toByteArray(); long sizeinkb = imageInByte.length / 1024;//大小以KB为单位

标签: java android firebase-storage image-size


【解决方案1】:

试试这个代码:

@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 为单位的图像大小

【讨论】:

  • 不要使用任何第三方库来完成这样的小任务
  • 请告诉我应该把这段代码放在哪里。谢谢楼主,给我帮助
  • 谢谢先生帮助我,但我认为它会压缩图像
  • 是的,它压缩了图像,顺便说一句,我的代码是否工作?
  • 您的代码有效,感谢您给我时间
【解决方案2】:

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

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

谢谢。

【讨论】:

    猜你喜欢
    • 2023-02-04
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2014-06-12
    相关资源
    最近更新 更多