본문 바로가기
IT 자료

java 이미지 사이즈 줄이기(썸네일)

by 성곤 2017. 10. 27.
반응형


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, 00, 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 (버퍼드이미지를 클라이언트로 출력해주는 예제)

반응형