2016-09-20 2 views
0

bitmap.getHeight(); nullPointerException이 발생했습니다.바이트 []를 비트 맵으로 변환 할 수 없음 - 널 포인터 예외가 발생했습니다.

byte[] decode = Base64.decode(jsonObj.getString("pic"), Base64.DEFAULT); 
Log.i("size",decode.length+""); //65535 
Bitmap pic = getImage(decode); 

public static Bitmap getImage(byte[] image) { 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    return BitmapFactory.decodeByteArray(image, 0, image.length,options); 
} 

:

나는 다음과 같은 JSON에서 검색 "....... iVBORw0KGgoAAAANSUhEUgAAAgAAAAGACAIAAABUQk3": "그림"내 JSON에서

: 이것은 내 비트 맵을 얻으려고하는 방법이다 하지만 이미지를 표시 할 수 없습니다. 아이디어가 있으십니까?

+1

정확하게 'bitmap'변수가 어디에 있으며 'getHeight() '를 어디에서 실행합니까? – Squirrelkiller

+0

스택 트레이스 란 무엇입니까? 항상 stacktrace로 게시하십시오. – jakubbialkowski

+0

이 링크를 사용해보세요
- http://stackoverflow.com/questions/11613594/android-how-to-convert-byte-array-to-bitmap - http://stackoverflow.com/questions/11547327/android- 최선의 방법으로 변환하는 바이트 배열과 비트 맵 –

답변

0

오류는 BitmapFactory.decodeByteArray 안에 있어야하며 문제의 원인은 지원되지 않는 이미지 형식 일 가능성이 큽니다. base64로 인코딩 된 jpeg, png, gif 또는 bmp를 전달하는지 확인하십시오.

또한 65535가 decode 크기 인 경우 매우 의심 스럽습니다. 어쩌면 데이터는 데이터베이스 (블롭 크기가 65535 인 경우) 또는 다른 곳에서 트리밍됩니다.

+0

문제가 있습니다. 65KB 이상을 저장할 수 없습니다 ... 이전에 압축해야합니다. 감사. – lulu666

+0

'base64로 인코딩 된 jpeg, png, gif 또는 bmp'를 전달하는지 확인하십시오. 아닙니다. 확실히 base64로 인코딩되지 않았습니다. 그리고 난 그 GIF와 BMP는 너무 지원되지 않습니다 생각합니다. – greenapps

+0

물론 코드에서'Base64.decode'가 호출되기 때문에 그렇습니다. –