Glide,是否可以获取图像文件大小(而不是尺寸)?

3
我正在使用ACTION_GET_CONTENT并使用Glide加载选定的图像。我想以字节形式显示图像文件大小,但是Glide是否支持获取此数据的方法?
我可以找到在使用ACTION_GET_CONTENT时获取文件大小的方法,但我担心如果我使用这些方法,它可能会不必要地读取相同的文件两次。(我为大小读取一次,Glide再读取一次以获取图像)。如果图像是远程图像(用户可以从Google Drive选择图像),那么这将特别糟糕。

你正在向 Glide 传递 URL,这意味着你已经有了 File。只需从 File 对象中获取文件大小即可。我认为这不是不必要的读取操作。File 对象不会读取文件内容,它只包含文件的属性而非内容。 - ADM
@ADM 如果图像是远程图像,那就特别糟糕了。 - Pavneet_Singh
这仅涉及于ACTION_GET_CONTENT - ADM
你能给我更多细节吗?链接的问题有一个类似的答案,但是似乎File()需要一个Java URI,而我只有Android Uri。我已经搜索了转换的方法,但似乎不能简单地将Android Uri转换为Java URI - Damn Vegetables
1个回答

1

您可以使用SimpleTarget获取位图,然后通过获取字节数来计算kb、mb的大小,方法是使用getByteCountgetAllocationByteCount

Glide
    .with(context)
    .load("https://www.somelink.com/image.png")
    .asBitmap()
    .into(new SimpleTarget<Bitmap>() {
         @Override
        public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {            
            int byteCount = Integer.MIN_VALUE;
            if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT){
                 byteCount = resource.getByteCount();
            }else{
                byteCount = resource.getAllocationByteCount();    
            }
            int sizeInKB = byteCount / 1024;
            int sizeInMB = sizeInKB / 1024; 
            image.setImageBitmap(resource);
        }
    });

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