gpt4 book ai didi

java - Android 中的位图内存管理

转载 作者:太空狗 更新时间:2023-10-29 13:39:59 25 4
gpt4 key购买 nike

你好,我正在测试代码以避免在加载大量位图时发生内存崩溃。我有一个小问题,关于下面的代码

    Bitmap bmp;
long sizepreload, sizepostload,bmppixels;
sizepreload= Debug.getNativeHeapAllocatedSize();

bmp=getImageBitmapFromUrl("http://www.google.com/intl/en_com/images/srpr/logo2w.png");
sizepostload=Debug.getNativeHeapAllocatedSize();
bmppixels=bmp.getHeight()*bmp.getWidth();
Log.d("bmp test","pre="+sizepreload+"\n" +
"post="+sizepostload+"\n" +
"bmppixels="+bmppixels+"\n"+
"ratio="+(sizepostload-sizepreload)/bmppixels
);

该 fragment 的返回是:

pre=4260464
post=4333112
bmppixels=26125
ratio=2

所以位图每个像素占用 2 个字节。对于所有位图,每像素 16 位是恒定的,或者它是可变的(取决于屏幕密度或图像质量)。如果它是变量,我如何从 Bitmap 类中获取该比率?

提前致谢

这是从 url 下载的代码:

public static Bitmap getImageBitmapFromUrl(String url){
URL aURL;
Bitmap result = null;
try {
aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
result= BitmapFactory.decodeStream(is);
is.close();

} catch (Exception e) {
result=null;
e.printStackTrace();
}
return result;
}

最佳答案

位图每个像素最多可以有 4 个字节,这取决于位图的格式。屏幕密度不可变。但是,绘制位图时,可能需要根据屏幕密度调整大小,这会暂时影响您的堆。

关于java - Android 中的位图内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6893258/

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