내 문제는 여기에 있습니다.
내 이미지를 업로드하기 위해 동일한 크기의 여러 이미지 중에서 선택하도록 사용자에게 요청합니다.
내 인터페이스에는 너비, 이미지 높이 및 파일 길이에 대한 정보를 제공하는 4 개의 버튼이 있습니다.
Bitmap.createScaledBitmap을 호출 한 이미지의 네 가지 버전을 만든 다음 해당 비트 맵을 다시 파일로 압축합니다.
필자는 비트 맵을 재활용하고 파일을 삭제해야 할 필요가 있음을 잘 알고 있습니다.
그러나 큰 파일을 계산할 때 createScaledBitmap 메서드는 메모리 부족 예외를 발생시킵니다. 파일을 디코딩 할 때 inJustDecodeBounds 옵션을 사용한다고했지만 null 비트 맵을 반환합니다.Android 이미지 크기 조정 받기
누군가이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bmp = getScaledBitmap(BitmapFactory.decodeFile(uri, options), ratio);
private Bitmap getScaledBitmap(Bitmap bmp, float ratio) {
int srcWidth = bmp.getWidth();
int srcHeight = bmp.getHeight();
int dstWidth = (int)(srcWidth * ratio);
int dstHeight = (int)(srcHeight * ratio);
Bitmap result = Bitmap.createScaledBitmap(bmp, dstWidth, dstHeight, true);
bmp.recycle();
return result;
}
코드를 공유 할 수 있습니까? –
귀하의 질문은 http://stackoverflow.com/questions/15552076/android-bitmap-createscaledbitmap-throws-java-lang-outofmemoryerror-mostly-on-je의 중복이라고 생각합니다. 도움이 될지 확신 할 수 없지만 답변을 살펴 보시기 바랍니다. –
[Android Bitmap.createScaledBitmap의 중복 가능성은 주로 Jelly Bean 4.1에서 java.lang.OutOfMemoryError를 발생시킵니다.] (http://stackoverflow.com/questions/15552076/android-bitmap-createscaledbitmap-throws-java-lang-outofmemoryerror-mostly- on-je) –