2012-07-18 2 views
9

OutOfMemoryError 예외가 발생하는 이유를 알고 있습니다.하지만 바이트 배열을 Bitmap으로 변환하는 가장 좋은 방법은 있습니다. 코드 아래에서 사용했지만 큰 바이트가되면 응용 프로그램을 강제 종료하고 OutOfMemoryError 예외를 발생시킵니다.안드로이드 바이트 배열을 비트 맵으로 변환하는 가장 좋은 방법은?

그리고 API는 그냥 바이트 배열을 아무것도 반환하지 않습니다.

Bitmap bmp = BitmapFactory.decodeByteArray(bytearray, 0, bytearray.length); 
+0

bytearray의 크기는 얼마나됩니까? 정말 큰 이미지입니까? 아마도 이미지는 전화 메모리에 대해 실제로 크기 때문에 거기에서 검색하는 경우 이미지를 압축해야합니다. – DNax

+0

체크 아웃이 좋은 설명 http://developer.android.com/training/displaying-bitmaps/load-bitmap.html – dhams

답변

0

당신은 아마 다음과 같은 방법을 사용해야합니다 (DOC, 같은 방법을하지만, 옵션 매개 변수) :

public static Bitmap decodeByteArray (byte[] data, int offset, int length, BitmapFactory.Options opts) 

을 그리고 options 매개 변수를 사용하여 재생할 수 있습니다. 희망이 도움이 될 것입니다 =)

0

이미지를로드하는 데 AQuery 라이브러리를 사용하면 크기를 조정하고보기 등을하고 가장 일반적인 메모리 누수를 피할 수 있습니다. 이 도구는 여기에서 찾을 수 있습니다 : http://code.google.com/p/android-query/

+0

어떻게 바이트 []를 AQuery로 비트 맵으로 변환 할 수 있습니까? – atasoyh

3

다음은 나를 위해 일한 것입니다 : 사진은 이미지의 문자열입니다. 화상이 디코딩 할 수없는 경우

byte[] imgbytes = Base64.decode(photo, Base64.DEFAULT); 
Bitmap bitmap = BitmapFactory.decodeByteArray(imgbytes, 0, 
imgbytes.length); 
imageupload.setImageBitmap(bitmap); 
4
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapbytes , 0, bitmapbytes .length); 

는 디코딩 된 비트 맵을 돌려.

관련 문제