안드로이드에서 선택된 이미지를 문자열로 바꿔, DB에 저장했고
DB에 저장된 문자열을 다시 디코딩 하는 과정에서 오류가 났다.
bad base 64..
처음에는 이미지 문자열이 매우 길어서, 그냥 저렇게 하는 게 아닌가,,? 싶었는데
구글링을 해보니 많은 사람이 mysql에 이미지를 DB에 저장할 때 비트맵 값을 문자열로 바꾸어서 저장을 하고 있었다.
이미지(비트맵) -> 인코딩 -> 문자열(DB저장용)
문자열(DB저장값) -> 디코딩 -> 이미지(비트맵)
이미지(비트맵) 값을 setimage 를 해주면 이미지가 뜬다!
이 티스토리를 보고 도움을 받았다.
DB에서 저장된 문자열을 들고올 때 그냥 들고오면 안되고,,,
val cleanBase64 = base64String.replace(" ", "+").replace("_", "/").replace("-","+")
이 작업을 꼭 해줘야한다. 그래야 디코딩이 잘 되어 이미지로 변신..
POST 방식으로 값을 주고 받아서 GET 방식이니까 머~하고 넘기다가
도저히 여러 방법을 시도해봐도 답이 없길래
보낼 때 값이랑 DB에 있는 값이랑 문자열 길이는 같은데 자꾸 안된다고....그러고
그래서 값이 달라졌다는 건 직감했는데 특수 기호들이 바뀌어서 값이 저장될 줄이야.
하하 요즘 GPT를 많이 써서 맹신했는ㄷ.. 이런 일부 오류는 구글링이 답이다.