본문 바로가기
Android

[Android] Mysql 이미지(비트맵)->문자열(String) bad BASE 64 오류 해결

by 박매트 2023. 11. 28.

안드로이드에서 선택된 이미지를 문자열로 바꿔, DB에 저장했고

DB에 저장된 문자열을 다시 디코딩 하는 과정에서 오류가 났다. 

 

bad base 64..

처음에는 이미지 문자열이 매우 길어서, 그냥 저렇게 하는 게 아닌가,,? 싶었는데 

구글링을 해보니 많은 사람이 mysql에 이미지를 DB에 저장할 때 비트맵 값을 문자열로 바꾸어서 저장을 하고 있었다.

 

이미지(비트맵) -> 인코딩 -> 문자열(DB저장용)

문자열(DB저장값) -> 디코딩 -> 이미지(비트맵)

 

이미지(비트맵) 값을 setimage 를 해주면 이미지가 뜬다!

https://logtree.tistory.com/4

 

BASE64 ENCODE, DECODE 주의사항

하이브리드앱 방식의 앱을 개발 중 발생한 트러블 내용을 남겨본다. 아래와 같이 URL Scheme을 활용하여 웹에서 앱으로 데이터를 넘겨서VOD를 플레이하는 부분이 있다. appname://key=Abcde+ key 파라미터

logtree.tistory.com

이 티스토리를 보고 도움을 받았다.

DB에서 저장된 문자열을 들고올 때 그냥 들고오면 안되고,,, 

val cleanBase64 = base64String.replace(" ", "+").replace("_", "/").replace("-","+")

이 작업을 꼭 해줘야한다. 그래야 디코딩이 잘 되어 이미지로 변신..

 

POST 방식으로 값을 주고 받아서 GET 방식이니까 머~하고  넘기다가

도저히 여러 방법을 시도해봐도 답이 없길래

보낼 때 값이랑 DB에 있는 값이랑 문자열 길이는 같은데 자꾸 안된다고....그러고

그래서 값이 달라졌다는 건 직감했는데 특수 기호들이 바뀌어서 값이 저장될 줄이야.

하하 요즘 GPT를 많이 써서 맹신했는ㄷ.. 이런 일부 오류는 구글링이 답이다.