반응형
상황 예시)
모바일 카메라로 사진을 촬영 한다.
각 디바이스 마다 width , height 가 다르게 찍히게 될테니 ,
이를 크기 고정시키고 웹에 다시 업로드 시키고자 한다.
이럴때 필요한 리사이징 & 변경된 크기 확인을 하기 위한 용도이다.
try {
// ex) 모바일 세로 고정 크기 235 * 510
// ex) 모바일 가로 고정 크기 510 * 235
// 원본
image = ImageIO.read(new File("이미지 풀 경로"));
// 원본 width , height
int ori_width = image.getWidth(null);
int ori_height = image.getHeight(null);
int r_w = 235; // 리사이징 될 width
int r_h = 510; // 리아시징 될 height
if(ori_width > ori_height) { // 가로
r_w = 510;
r_h = 235;
}
// 리사이징
Image resizing = image.getScaledInstance(r_w , r_h , Image.SALE_SMOOTH);
BufferedImage newImage = new BufferedImage(r_w , r_h , BufferedImage.TYPE_INT_RGB);
Graphics g = newImage.getGraphics();
g.drawImage(resizing, 0, 0, null);
g.dispose();
ImageIO.write(newImage, "jpg", new File("생성할풀경로"));
} catch (Exception e) {
e.printStackTrace();
}
File imageFile = new File("생성한풀경로");
// 변경된 사이즈 확인.
if(imageFile.exists()) {
BufferedImage bi = ImageIO.read(new File("생성한풀경로"));
System.out.println("변경된 width : " + bi.getWidth());
System.out.println("변경된 height : " + bi.getHeight());
}
width(너비) 가 height(높이) 보다 수치가 크면 "가로" 로 촬영했다 라고 볼 수 있으니 값을 서로 바꿔 주었다.
반응형
LIST
'IT > JAVA' 카테고리의 다른 글
[JAVA] 가끔 써먹을 base64 인코딩 전용 메서드 생성. (0) | 2021.12.22 |
---|---|
[JAVA] 실 이미지에서 특정 좌표에 네모박스 그리기 (0) | 2021.12.22 |
[JAVA] 배열 순서 정렬 , indexof로 특정단어 위치 찾기 (0) | 2020.01.09 |
[JAVA] 배열에 대해서 (0) | 2020.01.09 |
[JAVA] for문 + 현재날짜 + 파일 생성 하기. (2) | 2019.12.24 |
댓글