2014-10-08 4 views
1

비트 맵을 멀티 파트 HTTP 요청에 포함 할 수있는 문자열로 변환하려고합니다. 요청 본문을 수동으로 구성해야하며 내 문제는 비트 맵을 바이트 배열로 변환 한 다음 바이트 배열에서 문자열로 변환합니다. 파일 구조의 무결성을 잃는 것처럼 보입니다. 파일 구조를 손상시키지 않고 어떻게 비트 맵을 문자열로 변환 할 수 있습니까?안드로이드 - 멀티 파트 요청에 포함될 문자열로 비트 맵 변환

Bitmap imageBitmap = BitmapFactory.decodeFile(data.getData()); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 
String s = new String(baos.toByteArray()); 
당신이 시도 를 Base64로 문자열로 비트 맵을 변환 할 수 있습니다
+0

'잃을 것으로 보인다 시도 파일 구조의 무결성 .' 파일? 당신은 비트 맵에 대해 이야기하고있었습니다. 특히 멀티 파트 업로드를 사용할 때 base64 인코딩을 사용하지 마십시오. 그냥 그대로 파일을 보내십시오. – greenapps

+0

필자의 경우에는 비트 맵이지만 파일을 업로드하거나 비트 맵을 동일하게해야한다고 가정했습니다. 파일을있는 그대로 보내는 방법에 대한 예가 있습니까? – ProfessorT

+0

'data.getData()'. 그게 뭐야? 파일 이름? – greenapps

답변

0

...

public String convertBitmapToString(final Bitmap pBitmap){ 
    final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
    pBitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); 
    final byte [] bytes = byteArrayOutputStream.toByteArray(); 
    final String string = Base64.encodeToString(bytes, Base64.DEFAULT); 
    return string; 
} 

아니면 64 기수를 사용할 수없는 경우,이

try { 
    String s = new String(baos.toByteArray(), "UTF-8"); 
} catch (UnsupportedEncodingException e) { 
    e.printStackTrace(); 
} 
+0

문제는 웹 서비스가 바이트 구조로 입력을 기다리고 있기 때문에 base64를 시도하고 서비스가 디코딩하지 않았기 때문입니다. 저는 서비스에 대한 통제권이 없으므로이를 해결해야합니다. – ProfessorT