일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Design Patterns
- Spring Batch
- java
- JVM
- Gradle
- Oracle
- php
- 요리
- ubuntu
- javascript
- laravel
- elasticsearch
- MySQL
- tool
- jenkins
- linux
- AWS
- Spring Boot
- it
- devops
- redis
- db
- springboot
- Web Server
- jsp
- 맛집
- Git
- IntelliJ
- Spring
- ReactJS
Archives
- Today
- Total
아무거나
이미지 리사이징 본문
반응형
이미지를 리사이징하여 저장하는 실습을 해보자.
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. 컴파일을 하면 리사이징된 파일이 생성된다. 실행하여 확인해보자.
반응형
'Java & Kotlin > Java' 카테고리의 다른 글
Java split 함수 사용시 "|"(=vertical bar) 기준으로 제대로 분리되지 않을 때 (0) | 2019.01.07 |
---|---|
문자열을 Hex(=16진수)로 변환하는 방법 (String To Hex) (0) | 2019.01.07 |
IntelliJ프로젝트에 JAR 라이브러리 추가하기 (0) | 2019.01.07 |
스프링부트에서 swagger사용시 크로스 도메인 이슈 (2) | 2018.11.20 |
java 설치 (0) | 2018.06.03 |
Comments