如何在Android中获取图像的大小?

15

我能够获取图像的高度和宽度。但是,是否有一种方法可以检索存储在手机中的图像的大小(以字节,KB或MB为单位)?


2
File file = new File(Environment.getExternalStorageDirectory(), "image.file"); long length = file.length(); - Eric Goncalves
在此之前,您是如何获取图像的高度和宽度的? - Akshatha S R
https://dev59.com/42ox5IYBdhLWcg3w74q3#8880528 - Ahmed Faisal
5个回答

33

感谢您的答案。这是我最终解决它的方法:

 Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), 
            R.drawable.ic_launcher);


     Bitmap bitmap = bitmapOrg;
     ByteArrayOutputStream stream = new ByteArrayOutputStream();   
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);   
     byte[] imageInByte = stream.toByteArray(); 
     long lengthbmp = imageInByte.length; 

感谢您的时间和回答 :)


3
Goon回答:lengthbmp的单位是字节(byte)。lengthbmp/1024.0表示以千字节(KB)为单位。lengthbmp/1024.0/1024.0表示以兆字节(MB)为单位。 - mazend
如何获取压缩前和压缩后的内容? - Pratik Butani
在压缩之前,您可以使用bitmap.getByteCount()。请记住,“压缩”版本是JPEG格式,因此如果您比较两个大小,则不一定是在比较相同的内容。 - Douglas Kazumi

11

您只需要创建一个新的File对象,例如...

String filepath = Environment.getExternalStorageDirectory() + "/file.png";
File file = new File(filepath);
long length = file.length();

5
这表明了文件的大小,而非图像的大小。 - Avinash R

10
假设你所说的是位图(Bitmap),而不是图片视图(ImageView),那么有一个方法叫做Bitmap.getByteCount()可用于获取位图的字节数量。

@mehmet 是的,但是在两年前发布时它是有效的。我有机会时会进行更新。 - Mike D

7
 File file = new File("/sdcard/imageName.jpeg");
 long length = file.length();
 length = length/1024;
 System.out.println("File Path : " + file.getPath() + ", File size : " + length +" KB");

3

当您右键单击文件并查看文件详细信息时,此命令将返回与计算机上显示的实际大小相匹配的大小。

File file = new File("/sdcard/my_video.mp4");
long length = file.length() / 1024; // Size in KB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接