Java 如何将数组元素(图像)转换为位图?
我想加载大尺寸的图像,但我有问题,使它。它崩溃了,因为OutOfMemoryError。这是我的阵列:Java 如何将数组元素(图像)转换为位图?,java,android,Java,Android,我想加载大尺寸的图像,但我有问题,使它。它崩溃了,因为OutOfMemoryError。这是我的阵列: Integer[] img = { R.drawble.pic1, R.drawble.pic2, R.drawble.pic3, R.drawble.pic4 }; 如何将img[0]、img[1]、img[2]和img[3]转换为位图? 请帮忙。。对不起,我的英语不好。试试这段代码,你会把一个ID数组转换成一个位图数组。: Integer[] img = { R.drawble.
Integer[] img = {
R.drawble.pic1, R.drawble.pic2, R.drawble.pic3, R.drawble.pic4
};
如何将img[0]、img[1]、img[2]和img[3]转换为位图?
请帮忙。。对不起,我的英语不好。试试这段代码,你会把一个ID数组转换成一个位图数组。:
Integer[] img = { R.drawble.pic1, R.drawble.pic2, R.drawble.pic3,
R.drawble.pic4 };
Bitmap[] bitmap = new Bitmap[img.length];
for (int i = 0; i < img.length; i++)
bitmap[i] = BitmapFactory.decodeResource(getResources(), img[i]);
Integer[]img={R.drawble.pic1,R.drawble.pic2,R.drawble.pic3,
R.drawble.pic4};
位图[]位图=新位图[img.length];
对于(int i=0;i
如果您在转换大尺寸图像时遇到问题,请查看。检查此处:
而BitmapFactory类:Android应用程序的堆大小有限(旧设备上的最小堆大小只有16MB)。这因设备而异,因此在QA期间要小心。由于位图每像素最多需要4个字节,因此大位图可以轻松填满堆(1000 x 1000像素=3.8MB) 这意味着您必须非常小心,并使用几种策略来避免浪费内存:
ViewPager
中显示它们,一次只能加载1-2页。隐藏页面时,销毁其位图并调用bitmap.recycle()
,以确保立即释放内存Bitmap.createScaledBitmap
重新缩放。不要忘记立即回收()
原始大位图EclipseMat
)了解应用程序的内存使用情况。我建议在Android4+上进行大多数探索,因为2.x将位图保存在本机堆中,不容易进行探索。如果你能将应用程序的峰值内存消耗控制在16MB以下,你就不应该再遇到OutOfMemory错误. 检查此主题<代码>回收或缩小你的图像。@Raghunandan:我试过一些将图像转换成位图的技巧。但我无法从元素数组中加载。Android在加载大型图像时遇到问题。看看这篇文章。