1

我正在尝试实现下面的代码,将图像路径转换为位图以显示在我的活动中。我收到以下错误。我尝试了一堆不同的解决方案,但没有一个有效

将图像加载到 Bitmap 对象时出现奇怪的内存不足问题

Android:将大型位图文件调整为缩放的输出文件

OutOfMemoryError:位图大小超出 VM 预算:- Android

错误:E/dalvikvm-heap(19252):12742656 字节的外部分配对于此进程来说太大。

for(int i = 0; i < numItems; i++) {

     File imgFile = new  File(photoPaths.get(i));

        if(imgFile.exists())
        {

             images[i] = BitmapFactory.decodeFile(imgFile.getAbsolutePath());


        }
4

2 回答 2

1

您可以考虑以一种更及时的方法加载它们,或者使用inSampleSize位图工厂的选项(即,您可以将 a 传递BitmapFactory.Options给工厂,并inSampleSize设置为理想情况下的 2 的幂)。还要确保设置为inPurgeabletrue。

MediaStore如果您从图片中提取这些图像ContentProvider,您还可以使用缩略图

也许您可以告诉我们更多有关您的用例的信息,以便我们提供更好的帮助。

于 2012-04-03T21:49:22.957 回答
0

您正在尝试加载多个大位图,其中至少有一个约为 12MB。它们太大了。您发布的解决方案确实有效。将您的位图调整为更小的尺寸,尤其是当您只是在屏幕上显示位图时。

于 2012-04-03T21:36:50.987 回答