Android计算一张图片的大小

2023-07-31  本文已影响0人  业精于勤_荒于嬉

要计算一张图片的大小,可以使用以下步骤:

1、获取图片文件的路径或者资源ID
2、创建一个BitmapFactory.Options对象,并将inJustDecodeBounds属性设置为true。这样在解码过程中不会真正加载整个图片到内存中,而是只获取宽度和高度信息。
3、使用BitmapFactory.decodeFile()或者BitmapFactory.decodeResource()方法来解码图片,并传入之前创建的Options对象。
4、通过Options对象的outWidth和outHeight属性获取到图片的实际宽度和高度。
5、根据宽度和高度计算出图片的大小。可以使用公式:大小=宽度x高度x每像素所占字节数。每像素所占字节数取决于图像格式(例如 ARGB_8888是4字节)

// 计算本地文件路径对应的图片大小
public long calculateImageSize(String filePath) {
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(filePath, options);

    int width = options.outWidth;
    int height = options.outHeight;

   // 计算每个像素所占字节数,默认为 ARGB_8888 格式,即 4 字节
   int bytesPerPixel = 4; 

   // 计算总大小
   long sizeInBytes= (long)width * height * bytesPerPixel;

   return sizeInBytes;
}

// 计算资源ID对应的图片大小
public long calculateImageSize(Context context, int resourceId) {
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeResource(context.getResources(), resourceId, options);

    int width = options.outWidth;
    int height = options.outHeight;

   // 计算每个像素所占字节数,默认为 ARGB_8888 格式,即 4 字节
   int bytesPerPixel = 4; 

   // 计算总大小
   long sizeInBytes= (long)width * height * bytesPerPixel;

   return sizeInBytes;
}

这样就可以得到图片的大小。请注意,由于计算结果是以字节为单位的,如果需要更友好地展示(如KB或MB),可以进行相应的转换。

上一篇下一篇

猜你喜欢

热点阅读