[JAVA] 이미지 리사이즈
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
String imgOriginalPath = "원본이미지경로"; // 원본 이미지 파일명
String imgTargetPath = "변경할이미지경로"; // 새 이미지 파일명
String imgFormat = "jpg"; // 새 이미지 포맷. jpg, gif 등
int newWidth = 600; // 변경 할 넓이
int newHeight = 700; // 변경 할 높이
String mainPosition = "W"; // W:넓이중심, H:높이중심, X:설정한 수치로(비율무시)
Image image;
int imageWidth;
int imageHeight;
double ratio;
int w;
int h;
try{
//원본 이미지
image = ImageIO.read(new File(imgOriginalPath));
//원본 이미지 사이즈
imageWidth = image.getWidth(null);
imageHeight = image.getHeight(null);
if(mainPosition.equals("W")){ // 넓이기준
ratio = (double)newWidth/(double)imageWidth;
w = (int)(imageWidth * ratio);
h = (int)(imageHeight * ratio);
}else if(mainPosition.equals("H")){ // 높이기준
ratio = (double)newHeight/(double)imageHeight;
w = (int)(imageWidth * ratio);
h = (int)(imageHeight * ratio);
}else{ //설정값 (비율무시)
w = newWidth;
h = newHeight;
}
// 이미지 리사이즈
// Image.SCALE_DEFAULT : 기본 이미지 스케일링 알고리즘 사용
// Image.SCALE_FAST : 이미지 부드러움보다 속도 우선
// Image.SCALE_REPLICATE : ReplicateScaleFilter 클래스로 구체화 된 이미지 크기 조절 알고리즘
// Image.SCALE_SMOOTH : 속도보다 이미지 부드러움을 우선
// Image.SCALE_AREA_AVERAGING : 평균 알고리즘 사용
Image resizeImage = image.getScaledInstance(w, h, Image.SCALE_DEFAULT);
//변경 이미지 저장
BufferedImage newImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics g = newImage.getGraphics();
g.drawImage(resizeImage, 0, 0, null);
g.dispose();
ImageIO.write(newImage, imgFormat, new File(imgTargetPath));
}catch (Exception e){
e.printStackTrace();
}
'Web Programing! > JAVA / JSP' 카테고리의 다른 글
[spring boot] 이클립스 설치하기 (0) | 2019.04.17 |
---|---|
[Spring boot]스케줄러(scheduler) (0) | 2019.04.10 |
[JAVA ]spring url 이미지 다운로드 (0) | 2019.03.29 |
[JAVA] 특수문자 치환시 유용한 클래스 (0) | 2019.03.26 |
[JAVA] JAVA내에서 IP찾기 (0) | 2015.12.14 |
JSTL에서 forEach, forTokens 실전 사용 (0) | 2015.09.09 |
[JAVA]Blob 와 Clob의 차이와 호출 (0) | 2015.01.29 |