2011-12-29 71 views
-1

我想在ImageView中加载图像。所以,我提出:Image OutOfMemoryError

Intent gallery = new Intent(); 
    gallery.setType("image/*"); 
    gallery.setAction(Intent.ACTION_GET_CONTENT); 

,然后我们又回到了URI和媒体,其次是图像加载到ImageView的。

但如果图像的尺寸很大,我有以下异常:

12-29 17:51:25.240: ERROR/AndroidRuntime(24339): java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at android.graphics.Bitmap.nativeCopy(Native Method) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at android.graphics.Bitmap.copy(Bitmap.java:315) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at na.gioacchinodelprete.android.signatureimage.SignatureImageActivity.writeOnDrawable(SignatureImageActivity.java:290) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at na.gioacchinodelprete.android.signatureimage.SignatureImageActivity.onActivityResult(SignatureImageActivity.java:258) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at android.app.Activity.dispatchActivityResult(Activity.java:3934) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at android.app.ActivityThread.deliverResults(ActivityThread.java:2532) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:2578) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at android.app.ActivityThread.access$2000(ActivityThread.java:117) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:965) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at android.os.Looper.loop(Looper.java:123) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at android.app.ActivityThread.main(ActivityThread.java:3691) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at java.lang.reflect.Method.invoke(Method.java:507) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
12-29 17:51:25.240: ERROR/AndroidRuntime(24339):  at dalvik.system.NativeStart.main(Native Method) 

帮我?? !!!

+0

这个问题已经回答了好几次,不用再问了。的 – slayton 2011-12-29 20:47:24

+0

可能重复的[机器人:奇异出存储器问题的](http://stackoverflow.com/questions/477572/android-strange-out-of-memory-issue) – slayton 2011-12-29 20:47:30

回答

-2

错误描述清楚,你的图像大小不是由Dalvik虚拟机的支持。如果您的图片尚未支持分辨率,请转换并尝试。如果已经在该分辨率中,则需要编辑并缩小图像的大小。

+0

图像的格式是无关的,仅分辨率事项。 – dmon 2011-12-29 17:09:53

+0

同意,这就是我的意思是通过使用位图到JPEG。编辑我的答案。感谢您指点。 – kosa 2011-12-29 17:14:46

+0

@thinksteep当我开始在社区中帮助更多人并回答更多问题时提供一些建议:提供更多链接和/或示例代码(这也会带来更多的赞扬)。他如何编辑并缩小尺寸?没有代码或引用的三个句子的答案并不真的有帮助。无论如何,只是试图传递我开始帮助时告诉我的信息。 :) – Jack 2011-12-29 17:39:45

4

这已经被问过很多次。您需要对图像进行缩减采样,以便它可以显示在ImageView中。有关解决方案,请参阅this question。请记住图像需要W x H x 4 bytes存储在内存中并显示。