팡이네

이미지 크기 조절

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * 사진 이미지 크기 조절
 * @param img
 * @param width
 * @param height
 * @return
 */
private BufferedImage resizeImage(BufferedImage img, int width, int height) {
    //int type = img.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : img.getType();          //png = TYPE_INT_ARGB
     
    Image tmp = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
    BufferedImage resized = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);   //jpeg = TYPE_INT_RGB
    Graphics2D g2d = resized.createGraphics();
    g2d.drawImage(tmp, 0, 0, null);
    g2d.dispose();
    return resized;
}

사진 이미지 Base 64 문자열 변환

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
private String resizePhoto(String filePath, int MAX_SIZE) {
    try {
        ByteArrayOutputStream os = new ByteArrayOutputStream();
         
        //업로드 된 이미지(원본) 파일 읽기
        File file = new File(filePath);
        BufferedImage orgImage = ImageIO.read(file);
        BufferedImage resizedImage = null;
         
        int imageWidth = orgImage.getWidth();
        int imageHeight = orgImage.getHeight();
         
        //가로가 긴 이미지
        if (imageWidth > imageHeight) {
            if (imageWidth > MAX_SIZE) {
                double height = (double)imageHeight / (double)imageWidth * (double)MAX_SIZE;
                //가로 크기 = MAX_SIZE, 세로 크기 = height
                resizedImage = resizeImage(orgImage, MAX_SIZE, (int)height);
            }
        //세로가 긴 이미지
        } else {
            if (imageHeight > MAX_SIZE) {
                double width = (double)imageWidth / (double)imageHeight * (double)MAX_SIZE;
                //가로크기 = width, 세로 크기 = MAX_SIZE
                resizedImage = resizeImage(orgImage, (int)width, MAX_SIZE);
            }
        }
         
        //이미지 크기 변경 = resizedImage 아니면 원본 이미지 = orgImage
        ImageIO.write((resizedImage != null) ? resizedImage : orgImage, "jpeg", os);
         
        return Base64.getEncoder().encodeToString(os.toByteArray());    //base64 문자열 변환
    } catch (FileNotFoundException ex) {
        System.out.println("▶▶▶ File not found in [resizePhoto] " + ex);
    } catch (IOException ex) {
        System.out.println("▶▶▶ Error in [resizePhoto] " + ex);
    }
     
    return null;
}

'Java' 카테고리의 다른 글

날짜 관련 유틸리티  (0) 2018.10.23
JDK 8 인스톨 없이 설치하기  (0) 2018.10.20
POI, Excel 셀 생성  (0) 2015.06.30
POI, Excel 숫자 셀 생성  (0) 2015.06.30
POI, Excel 병합 셀 생성  (0) 2015.06.30