아무거나

이미지 리사이징 본문

Java & Kotlin/Java

이미지 리사이징

전봉근 2018. 10. 19. 16:42
반응형

이미지를 리사이징하여 저장하는 실습을 해보자.


1. 이미지를 프로젝트 최상위 경로에 저장 ( 해당 경로는 임의로 지정하셔도 됩니다. )


2. 코드를 작성한다.


import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;

import java.io.IOException;
import javax.imageio.ImageIO;

public class Main {

private final static String IMG_ORIGINAL_NAME = "testtest.jpeg"; // 원본 이미지 파일명
private final static String IMG_TARGET_NAME = "testtest_resize.jpeg"; // 새 이미지 파일명
private final static String IMG_TARGET_EXTENSION_NAME = "jpeg"; // 새 이미지 포맷. jpg, gif 등
private final static int RESIZE_WIDTH = 700; // 변경 할 넓이
private final static int RESIZE_HEIGHT = 700; // 변경 할 높이
private final static String RESIZE_SETTING_TYPE = "W"; // W:넓이중심, H:높이중심, S:설정한 수치로(비율무시)

public static void main(String[] args) throws IOException {
String currentDir = new File(".").getCanonicalPath(); // 해 프로젝트 경로
String imgOriginalPath= currentDir + "/" + IMG_ORIGINAL_NAME;
String imgTargetPath= currentDir + "/" + IMG_TARGET_NAME;
String imgExtensionName = IMG_TARGET_EXTENSION_NAME;
int resizeWidth = RESIZE_WIDTH;
int resizeHeight = RESIZE_HEIGHT;
String mainPosition = RESIZE_SETTING_TYPE;

Image image;
int imageWidth;
int imageHeight;
double ratio;
int setWidth;
int setHeight;

try {
// 원본 이미지 가져오기
image = ImageIO.read(new File(imgOriginalPath));

// 원본 이미지 사이즈 가져오기
imageWidth = image.getWidth(null);
imageHeight = image.getHeight(null);

if (mainPosition.equals("W")) {
// 넓이기준
ratio = (double)resizeWidth / (double)imageWidth;
setWidth = (int)(imageWidth * ratio);
setHeight = (int)(imageHeight * ratio);
} else if(mainPosition.equals("H")) {
// 높이기준
ratio = (double)resizeHeight / (double)imageHeight;
setWidth = (int)(imageWidth * ratio);
setHeight = (int)(imageHeight * ratio);
} else {
// 설정값 (비율무시)
setWidth = resizeWidth;
setHeight = resizeHeight;
}

// 이미지 리사이즈
// Image.SCALE_DEFAULT : 기본 이미지 스케일링 알고리즘 사용
// Image.SCALE_FAST : 이미지 부드러움보다 속도 우선
// Image.SCALE_REPLICATE : ReplicateScaleFilter 클래스로 구체화 된 이미지 크기 조절 알고리즘
// Image.SCALE_SMOOTH : 속도보다 이미지 부드러움을 우선
// Image.SCALE_AREA_AVERAGING : 평균 알고리즘 사용
Image resizeImage = image.getScaledInstance(setWidth, setHeight, Image.SCALE_SMOOTH);

// 새 이미지 저장하기
BufferedImage newImage = new BufferedImage(setWidth, setHeight, BufferedImage.TYPE_INT_RGB);
Graphics g = newImage.getGraphics();
g.drawImage(resizeImage, 0, 0, null);
g.dispose();
ImageIO.write(newImage, imgExtensionName, new File(imgTargetPath));
} catch (Exception e) {
e.printStackTrace();
}

}
}


3. 컴파일을 하면 리사이징된 파일이 생성된다. 실행하여 확인해보자.




반응형
Comments