티스토리 뷰

반응형

안드로이드에서 서버로 사진 관련 데이터를 보낼 때 사진 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을 받아서 디코딩 작업을 해주면 됩니다.

반응형
댓글