Bitmap 이미지를 Base64로 인코딩 할려고합니다
public String BitmapToBase64(Bitmap bm){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] bImage = baos.toByteArray();
String base64 = Base64.encodeToString(bImage, Base64.DEFAULT);
return base64;
}
Bitmap으로 가져올때 원본이미지 용량이 235KB 이지만 Base64 인코딩해서 txt 파일로 만들었을때 용량이 2.27MB 로 8배정도 커집니다. Base64로 인코딩시 얼마간 용량이 좀 커진다는건 알고 있지만 이정도는 너무 커지네요ㅠㅠ 인코딩한 문자열을 다시 디코딩해서 Bitmap이미지로 만들고 이미지 파일로 만들었을경우 이미지 용량이 1.68MB 이네요..
다시말해 원본이미지(235KB) ->Base64인코딩(2.27MB) ->Base64디코딩 -> 변환이미지(1.68MB) 이렇습니다.
위에소스는 인코딩시 소스구 아래소스는 디코딩 소스입니다.
public Bitmap Base64ToBitmap(String base64){
byte[] bImage = Base64.decode(base64, Base64.DEFAULT);
ByteArrayInputStream bais = new ByteArrayInputStream(bImage);
Bitmap bitmap = BitmapFactory.decodeStream(bais);
return bitmap;
}
인코딩 디코딩을 거친 파일이 원본파일보다 8배정도 커지고 있습니다. ㅠㅠ
왜그런지 해결을 못하고 있습니다.