티스토리 뷰
반응형
안드로이드에서 서버로 사진 관련 데이터를 보낼 때 사진 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을 받아서 디코딩 작업을 해주면 됩니다.
반응형
'알려주는 이야기 > 안드로이드' 카테고리의 다른 글
안드로이드 kakao 도로명 주소 api 사용하기 (7) | 2021.03.21 |
---|---|
안드로이드 라이브러리 만들고 JitPack으로 배포하기 (3) | 2020.08.29 |
Activity, Fragment 의 라이프사이클 (0) | 2020.08.29 |
안드로이드 Security Library 사용해서 SharedPreference 암호화 하기 (1) | 2020.08.28 |
안드로이드 Keystore 정보 숨기기 (1) | 2020.08.28 |
댓글