gpt4 book ai didi

java - 检查文件长度后在 Android 中进行位图采样

转载 作者:行者123 更新时间:2023-11-29 05:51:37 24 4
gpt4 key购买 nike

对于 Android,当将图像加载到内存中以确保我们不会超过我们通常做的 RAM 限制时

BitmapFactory.Options bounds = new BitmapFactory.Options();
bounds.inJustDecodeBounds = true;

然后对位图进行解码,得到它的宽度,我们可以据此决定是否采样。

我的问题是,如果我们从本地存储(SD 卡)加载位图,我们不能获取位图的文件位置吗:

   File file = new File(mPathToFile);

然后检查

   if(file.length()>MAX){

sampleSize = 2;//2 is just an example
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = sampleSize;
bitmap = BitmapFactory.decodeFile(mPathToFile, options);
}

这是错的吗?傻吗?

最佳答案

Is this wrong? Stupid?

不,但它可能太不准确了。以字节为单位的文件大小通常不代表内存中的实际图像大小,因为 JPG 和 PNG 等图像文件是 Bitmap 的压缩表示。因此文件大小与图像大小没有直接关系(虽然它们是成比例的,但您不能说 50K JPG 文件一定是 250x250 像素)。

这也意味着磁盘上的 50KB 并不意味着在内存中膨胀成 Bitmap 后的 50KB,因为它是压缩的。图像本身可能会占用接近 300KB(或更多)的内存(ARGB_8888 Bitmap 的要求大约为 W * H * 4 字节)。

进行边界解码允许您根据图像的实际大小(以及它在您的程序中实际占用的内存量)做出此决定。

关于java - 检查文件长度后在 Android 中进行位图采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13672734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com