지금 구현하려는 기능이
디바이스에서 jpg 파일을 선택해서 이 아이를 불러와 base64 encoding을 한 후 서버로 웹서비스를 이용해 전송하는 기능입니다.
File 객체를 이용해서
File f = new File(mImageUri.getPath());
를 이용해서 불러오는데, 이 내용을 가지고 이제 base64 encoding을 해서 보내는 방식인데
이미지(.jpg) 파일을 File 로 불러서 encoding 해도 인코딩이 제대로 되나요?
서버에서 받은 파일을 보면 인코딩이 깨져서 사진이 보이지 않는 것 같아 디버그 과정에서 그냥 인코딩만했다가 다시 디코딩을 해 디바이스에 새로운 파일로 저장해서 보는데 역시 인코딩이 깨졌는지 사진이 제대로 보이질 않습니다.
제가 유추하기로는 base64 encoding 하는 라이브러리가 잘 못 되었거나
이미지를 읽어오는 과정에 문제가 있는 것 같은데
base64 encoding은 아파치 라이브러리를 이용했습니다.
for (int i = 0; i < imageUri.size(); i++) {
Log.d("imageURI" , imageUri.get(i).toString());
File img = new File( getRealImagePath( imageUri.get(i)));
Log.d("imageURI", getRealImagePath( imageUri.get(i)));
byte[] imgBytes = null;
String out_content = "";
byte[] file_content = new byte[1000];
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(
new FileInputStream(img), "UTF-8"));
int bytesRead = 0;
String temp_input = new String(file_content, 0, bytesRead);
while ((temp_input = in.readLine()) != null) {
out_content += temp_input;
}
in.close();
imgBytes = out_content.getBytes("UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
을 이용해 out_content 에 jpg 파일 내용을 받아와서 imgBytes 에 바이트로 넣은 다음
org.kobjects.base64.Base64.encode(imgBytes) 의 결과를 서버로 전송합니다.
이과정에 도대체 어떤 문제가 있는지 잘 모르겠습니다 ㅠㅠ
도와주세요 ㅠㅠ