2013-08-14 3 views
0

1MB의 jpg 이미지가 12MB의 비트 맵이된다는 것은 의문의 여지가 있습니까? 난 그냥 이미지 뷰 (전체 화면)에 1메가바이트의 큰 이미지를로드 화면 spalsh을하고 그리고 난이 오류가있어 :안드로이드 문제 ImageView에 큰 이미지로드

Grow heap (frag case) to 27.724MB for 12582928-byte allocation 
08-14 21:31:13.302: I/dalvikvm(15434): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
08-14 21:31:13.302: I/dalvikvm(15434): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:594) 
08-14 21:31:13.302: I/dalvikvm(15434): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:447) 
08-14 21:31:13.312: I/dalvikvm(15434): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:781) 
08-14 21:31:13.312: I/dalvikvm(15434): at android.content.res.Resources.loadDrawable(Resources.java:1963) 
08-14 21:31:13.312: I/dalvikvm(15434): at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
08-14 21:31:13.312: I/dalvikvm(15434): at android.widget.ImageView.<init>(ImageView.java:120) 
08-14 21:31:13.312: I/dalvikvm(15434): at android.widget.ImageView.<init>(ImageView.java:110) 
08-14 21:31:13.312: I/dalvikvm(15434): at java.lang.reflect.Constructor.constructNative(Native Method) 
08-14 21:31:13.312: I/dalvikvm(15434): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
08-14 21:31:13.322: I/dalvikvm(15434): at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
08-14 21:31:13.322: I/dalvikvm(15434): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
08-14 21:31:13.322: I/dalvikvm(15434): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
08-14 21:31:13.322: I/dalvikvm(15434): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
08-14 21:31:13.322: I/dalvikvm(15434): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
08-14 21:31:13.322: I/dalvikvm(15434): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
08-14 21:31:13.322: I/dalvikvm(15434): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
08-14 21:31:13.322: I/dalvikvm(15434): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
08-14 21:31:13.322: I/dalvikvm(15434): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:316) 
08-14 21:31:13.322: I/dalvikvm(15434): at android.app.Activity.setContentView(Activity.java:1901) 

답변

0

JPEG 압축 된 이미지를하지만로드해야합니다 화면에 표시 할 비트 맵으로 각 픽셀은 색상 값으로 변환되므로 색상 당 8 비트와 알파 용으로 각 픽셀 당 4 바이트가 있습니다.

JPEG의 크기는 중요하지 않으므로 이미지의 너비와 높이 크기가 중요합니다.

편집 :

화면에서 차지하는 크기로 비트 맵을 크기 조절이 link를 참조 메모리에 작은 비트 맵을해야합니다.

ImageView 및 다른 뷰는 비트 맵의 ​​크기를 조절하지 않으므로 비트 맵이 원본입니다. 그러나 위 링크를 사용하여 비트 맵을 축소하고 메모리 사용을 낮게 유지할 수 있습니다.

+0

무게를 줄이고 이미지 품질을 유지하려면 어떻게해야합니까? 화면 크기를 조정하기 위해 이미지 크기를 조정했지만 여전히 가발이 큽니다. – Xenione

+0

@ Xenione 수정 된 답변보기 –