Android

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

박매트 2023. 11. 28. 00:56

안드로이드에서 선택된 이미지를 문자열로 바꿔, 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를 많이 써서 맹신했는ㄷ.. 이런 일부 오류는 구글링이 답이다.