본문 바로가기
공부

base64로 이미지 인코딩해서 getmapping으로 프론트에 보내주기

by happyeuni 2022. 8. 9.

여러 사진을 getmapping으로 보여줘야 할 상황이 필요했는데 

리스트로 josn 형태로 base64로 인코딩한 이미지들을 넣어주는 방식으로 보내줬다.

Message message = new Message();
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setContentType(new MediaType("application","json", Charset.forName("UTF-8")));
        try {
            List<RecordFileDto> fileDto = recordImgService.getFileDayList(memberId, date);
            if (fileDto == null) {
                System.out.println(">>>fileDto null");
                return new ResponseEntity<String>("null", HttpStatus.OK);
            }
            System.out.println(">>>>"+fileDto.size());
            System.out.println(">>>>"+fileDto.get(0).getFileName());

            String[] imageString = new String[fileDto.size()];
            List<String> result = new ArrayList<>();
            for (int i = 0; i < fileDto.size(); i++) {
                InputStream inputStream = null;
                ByteArrayOutputStream byteArrayOutputStream = null;
                try {
                    File file = new File(fileDto.get(i).getFileUrl());
                    if (file.exists()) {
                        System.out.println(">>file exists");
                        inputStream = new FileInputStream(file);
                        byteArrayOutputStream = new ByteArrayOutputStream();

                        int len = 0;
                        byte[] buf = new byte[1024];
                        while ((len = inputStream.read(buf)) != -1) {
                            byteArrayOutputStream.write(buf, 0, len);
                        }
                        byte[] fileArray = byteArrayOutputStream.toByteArray();
                        imageString[i] = new String(Base64.encodeBase64(fileArray));

                        String changeString = "data:image/png;base64," + imageString[i];
                        result.add(changeString);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    inputStream.close();
                    byteArrayOutputStream.close();
                }
            }
            message.setStatus(StatusEnum.OK);
            message.setMessage("사진리스트 조회 성공");
            message.setData(result);
            return new ResponseEntity<>(message,httpHeaders,HttpStatus.OK);

fileDto 에 사진에 대한 정보를 가진 배열.

imageString[] 은 추후에 이미지에 대해 인코딩한 것들을 담아줄 배열.

result는 최종적으로 보낼 이미지 인코딩한 정보의 배열.

 

잘 인코딩되었는지 확인하는 방법은

postman에서 결과값이 잘 나오는지 확인 후 그 imageString에 해당하는 부분을 복사하여

아래의 사이트에 붙여넣어 확인하면 된다.

 

이와같이 원래 넣었던 이미지가 다시 디코딩되어 잘 나오는 것을 확인하면 끝!

https://ko.rakko.tools/tools/71/

 

Base64- 이미지 디코더 / 컨버터 | RAKKOTOOLS🔧

Base64 문자열을 이미지로 디코딩

ko.rakko.tools

나는 이 사이트를 활용했는데 base64이미지 디코터를 검색하면 많은 사이트가 나오니 원하는 사이트에서 하면 된다.

 

 

 

참고 :

https://zzznara2.tistory.com/442

 

[Java/jsp] 자바로 이미지를 base64 인코딩 소스로 변환하는 함수

자바로 이미지를 base64 인코딩 소스로 변환하는 함수입니다. 필요하실 때 참고하세요. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42..

zzznara2.tistory.com

 

댓글