반응형
java 이미지 사이즈 줄이기(썸네일)
thumbnailator를 사용해서 썸네일로 만들려고 했지만, 이상하게도 jeus서버에서 계속 오류를 뿜어서 버릴 수 밖에 없었다.
그래서 라이브러리를 사용하지 않고 순수 java에서 썸네일을 만들기로 했다.
spring에서 별도의 썸네일을 미리 만들어서 저장하지 않고
호출시마다 이미지를 읽고 서버단에서 리사이즈하는 방법이다.
서버에 무리가 갈꺼라고 생각했지만, 애초에 서버cpu는 놀고 있어서...
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 | @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"); int thumbnail_width = 125; int thumbnail_height = 125; BufferedImage buffer_original_image = ImageIO.read(file); BufferedImage buffer_thumbnail_image = new BufferedImage(thumbnail_width, thumbnail_height, BufferedImage.TYPE_3BYTE_BGR); Graphics2D graphic = buffer_thumbnail_image.createGraphics(); graphic.drawImage(buffer_original_image, 0, 0, thumbnail_width, thumbnail_height, null); ImageIO.write(buffer_thumbnail_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 |
참조 : http://hellogk.tistory.com/6 (이미지 사이즈 수정방법)
참조 : https://stackoverflow.com/questions/33938704/spring-mvc-how-to-return-an-image-from-controller?answertab=active#tab-top (버퍼드이미지를 클라이언트로 출력해주는 예제)
반응형
'IT 자료' 카테고리의 다른 글
사해효과(the Dead Sea effect) (0) | 2017.10.31 |
---|---|
java String json to list map 변경 방법 (0) | 2017.10.27 |
java에서 image파일을 thumbnail로 만들어서 응답하는 방법 (0) | 2017.10.25 |
location.origin 익스플로러 (0) | 2017.10.11 |
javascript 천단위 콤마 (0) | 2017.09.29 |