알려주는 이야기/안드로이드
안드로이드 이미지 bitmap 인코딩, 디코딩 처리
임리프
2020. 8. 29. 17:31
반응형
안드로이드에서 서버로 사진 관련 데이터를 보낼 때 사진 uri로 보내면 휴대폰에서 사진을 지웠을 경우 사진을 불러올 수 없게 됩니다.
해결 방법은 이미지를 bimap 처리를 하고 인코딩하여 서버로 보내고 받아올 땐 디코딩하여 이미지로 바꾸면 됩니다.
private fun bitmapToString(bitmap: Bitmap): String {
val byteArrayOutputStream = ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream)
val byteArray = byteArrayOutputStream.toByteArray()
return Base64.encodeToString(byteArray, Base64.DEFAULT)
}
bitmap을 인코딩하여 String으로 반환해주는 코드입니다.
private fun stringToBitmap(encodedString: String): Bitmap {
val encodeByte = Base64.decode(encodedString, Base64.DEFAULT)
return BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.size)
}
인코딩 된 String을 받아 bitmap으로 변환해주는 코드입니다.
사용은 아래와 같이 사용하면 됩니다.
val bitmap = MediaStore.Images.Media.getBitmap(this.contentResolver, "여기에 이미지 uri")
bitmapToString(bitmap)
이미지의 uri를 bitmap으로 바꿔주고 인코딩 작업을 해줍니다.
인코딩 작업을 해서 반환받은 String을 서버로 넘겨주면 됩니다.
val bitmap = stringToBitmap("여기에 인코딩된 이미지 string")
image.setImageBitmap(bitmap)
그리고 서버에서 인코딩 된 이미지의 string을 받아서 디코딩 작업을 해주면 됩니다.
반응형