XML을 사용하여 서버에서 검색 한 파일에 문제가 있습니다.안드로이드 비트 맵 디코드 문제
비트 맵 (GIF)은 base64로 인코딩 된 다음 XML 내부에 문자열로 저장됩니다. 앱이이 문자열을 가져 와서 비트 맵으로 디코딩 한 다음 표시합니다.
대부분의 경우 정상적으로 작동하지만 때로는 BitmapFactory.decodeByteArray가 문제를 나타내지 않고 null을 반환합니다.
XML을 통해 실패한 파일 중 하나를 리소스로 복사했으며 반복적으로 작동합니다.
bMapArray = Base64Coder.decode(cd.image); // Decode the encoded string
bMap = BitmapFactory.decodeResource(getResources(), R.drawable.fail);
Log.e("config", bMap.getConfig().name());
// shows RGB_565, decodes OK and will display
bMap = BitmapFactory.decodeByteArray(bMapArray, 0, bMapArray.length);
Log.e("config", bMap.getConfig().name());
// Null config and displays OK for some files,
// Fails decodeByteArray for the file matching the one used as a resource and some others
나는 성공을 거두지 못한 채로 문제를 풀어 내려고 노력했다. 누구나 밝은 아이디어가 있습니까? 64 비트 enc/decode 프로세스에 문제가 있다고 받아 들여서 기쁩니다. 그러나 decodeByteArray에서 오류가 발생하지 않았는지 확실하지 않습니다.
건배,
마틴.
흠 - 파일을 배열로 변환 한 다음 decodebytearray를 사용하여 다시 변환합니다. 그것은 여전히 실패합니다, 그래서 나는 그것이 비난 squarley를 decodebytearray에 둔다고 생각합니다. 도청 전문가! 내가 어디에서 근원을 찾을 수 있는지 아는가? 나는 PNG를 시험해 볼 것이지만, 더 많은 서버 작업이 필요하다는 것을 의미한다. 'InputStream is = getResources(). openRawResource (R.drawable.fail); byte [] array = 새 바이트 [] {}; 시도 { \t \t \t is.read (array); \t \t} 캐치 (IOException이 전자) { \t \t \t // TODO catch 블록을 \t \t \t 전자를 자동 생성.printStackTrace(); \t \t bMap = BitmapFactory.decodeByteArray (array, 0, array.length); ' –
PNG 및 JPG도 실패합니다! –
http://code.google.com/p/skia/source/checkout에서 decodeByteArray 소스를 얻을 수 있습니다. – Torid