java(spring)에서 image파일을 thumbnail로 만들어서 다운로드하는 방법
이미 이미지는 업로드가 되어있는데, 용량이 크다.
근데, 이 이미지를 썸네일로 자주 사용하게 되는데... 트래픽과 속도에 대해서 영향이 크다.
손톱만한 이미지(80*80)를 쓰는데, 용량 6MB, 사이즈 4k파일을 가져오는 건 좀 아니지 않는가
그래서 애초에 큰 이미지를 서버에서 썸네일로 변환해서 사용자에게 출력해주기로 했다.
thumbnailator를 사용했다. (참조 링크)
압축을 풀고 폴더를 프로젝트 내의 경로에 맞춰서 넣어주면 된다.
호출할 때마다 썸네일로 만들어주면,
서버에 부하가 많이 들어가지 않을까 했는데 무시해도 될 정도라고하니 다행이다.
gif같은 움짤은 작아진 다음에는 움직이지 않았다.
*주의사항 : 톰캣에서는 잘 되지만, 제우스에서 오류가 나는 경우가 있음. 꼭 개발서버나 같은 서버환경에서 충분한 테스트 후 작업하길 바람.
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 | @RequestMapping(value = "/getImage", method = RequestMethod.GET) public void showImage(HttpServletResponse response) throws Exception { ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream(); try { //이미지 파일 읽기 File file = new File("/FilePath/FileName.jpg"); // thumbnailator를 이용하여 썸네일 125*125 사이즈, 확장자jpeg로 변경 BufferedImage image = Thumbnails.of(file).size(125, 125).outputFormat("jpeg").asBufferedImage(); ImageIO.write(image, "jpeg", jpegOutputStream); } catch (IllegalArgumentException e) { response.sendError(HttpServletResponse.SC_NOT_FOUND); } byte[] imgByte = jpegOutputStream.toByteArray(); response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); ServletOutputStream responseOutputStream = response.getOutputStream(); responseOutputStream.write(imgByte); responseOutputStream.flush(); responseOutputStream.close(); } | cs |
참조 : https://github.com/coobird/thumbnailator (이미지를 썸네일로 만들어주는 thumbnailator)
참조 : https://stackoverflow.com/questions/33938704/spring-mvc-how-to-return-an-image-from-controller?answertab=active#tab-top (버퍼드이미지를 클라이언트로 출력해주는 예제)
thumbnailator를 사용하지 않고 java로만 썸네일 만드는 방법 (쉬움)
링크 : http://toyuq.tistory.com/256
'IT 자료' 카테고리의 다른 글
java String json to list map 변경 방법 (0) | 2017.10.27 |
---|---|
java 이미지 사이즈 줄이기(썸네일) (0) | 2017.10.27 |
location.origin 익스플로러 (0) | 2017.10.11 |
javascript 천단위 콤마 (0) | 2017.09.29 |
새창(팝업) post으로 파라미터 넘기기 (0) | 2017.09.26 |