【问题标题】:Getting error: external allocation too large for this process出现错误:此进程的外部分配太大
【发布时间】:2012-04-17 14:31:48
【问题描述】:

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

Strange out of memory issue while loading an image to a Bitmap object

Android: Resize a large bitmap file to scaled output file

OutOfMemoryError: bitmap size exceeds VM budget :- 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());


        }

【问题讨论】:

标签: android bitmap


【解决方案1】:

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

如果您从MediaStoreContentProvider 中提取这些图像,您也可以使用thumbnails

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

【讨论】:

  • 为 inPurgeable=true 建议点赞
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-13
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 2011-10-04
    相关资源
    最近更新 更多