반응형
1. 에러 메세지
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:613)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:589)
at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:369)
at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:395)
2. 해결 방법
Uri path = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
// intent 의 여분 데이터로 저장된 비트맵 이미지를 얻는다.
//Bitmap bmp = (Bitmap) data.getExtras().get("data");
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inPurgeable = true; // 메모리를 줄여주는 옵션
options.inPreferredConfig = Bitmap.Config.RGB_565;
options.inSampleSize = calculateInSampleSize(options, resizeHeight, resizeHeight);
options.inJustDecodeBounds = false;
options.inDither = true; // 이미지를 깔끔하게 처리해서 보여주는 옵션
Bitmap bmp = BitmapFactory.decodeFile(fileFullPath, options);
/**
* 이미지의 샘플사이즈를 계산한다.
* @author 임성진
* @version 2.0.0
* @since 2017-03-31 오전 9:16
* @params
* @return
*/
public int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {
// Raw height and width of image
int height = options.outHeight;
int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
final int halfHeight = height / 2;
final int halfWidth = width / 2;
// Calculate the largest inSampleSize value that is a power of 2 and keeps both
// height and width larger than the requested height and width.
while ((halfHeight / inSampleSize) >= reqHeight
&& (halfWidth / inSampleSize) >= reqWidth) {
inSampleSize *= 2;
}
}
return inSampleSize;
}
반응형
'Programming > Android' 카테고리의 다른 글
dimen 같은 크기로 가져오기 (0) | 2017.04.13 |
---|---|
Duplicate files copied in APK 해결방법 (0) | 2017.04.03 |
카카오톡 해시키(Hash key) 받아오는 방법 (0) | 2017.03.15 |
[Error]java.lang.IllegalAccessError: Method 'void android.support.v4.content.ContextCompat.<init>()' is inaccessible to class 'com.google.firebase.iid.zzg' (0) | 2017.02.28 |
[Android Studio] 자동완성 주석 달기 by Intellij (1) | 2017.02.17 |