파일의 크기가 아닌 이미지 파일의 가로X세로 크기를 구하고 싶었다.
BufferedImage 를 사용하여 이미지의 크기를 구해보자.
@Transactional
public String createImage(Image imgVo, MultipartFile file) {
. . .
if(file != null) {
String restoNm = createAttachFile(imgId, file);
Path filePath = fileCon.uploadFile(file,restoNm);
try {
File imageFile = new File(filePath.toString());
BufferedImage image = ImageIO.read(imageFile); // 이미지 파일 읽어오기
if (image != null) {
imgVo.setWidth(image.getWidth());
imgVo.setHeight(image.getHeight());
}
} catch (IOException e) {
e.printStackTrace();
}
}
. . . 생략
return imgId;
}
BufferedImage image = ImageIO.read(imageFile);
ImageIo.read() 를 통해 이미지를 메모리로 불러온 후 이미지의 정보를 얻을 수 있다.
image.fetWidth() , image.getHeight() 메소드를 통해 가로 X 세로 크기를 구할 수 있다.
다만 BufferedImage는 이미지 전체를 메모리로 불러온 후 이미지의 정보를 얻어오게 되므로 로딩에 시간이 많이 걸린다.
그럼 그냥 Image로 구하면 되지 않나?
물론 Image 자체로도 이미지 데이터를 구할 수 있다.
Image img = ImageIO.read();
하지만 보통 BufferdImage를 쓰는 이유중 하나는 RGB(해상도) 때문이다.
아직까지 로딩 시 큰 차이는 못 느껴서 웬만하면 BufferdImage를 사용한다.
'JAVA > Spring' 카테고리의 다른 글
[JAVA] 이미지 URL 변환 후 화면에 보여주기(가져오기) (feat.미리보기) (0) | 2024.01.09 |
---|---|
[Spring] boot 에서 JWT 인증 토큰 생성 및 사용하기 (0) | 2023.12.01 |
[Spring] Multi module - 모듈 별 application.yml 파일 환경 설정 및 관리하는 방법 (0) | 2023.12.01 |
[JAVA] [Eclipse] project에 Dynamic Web Module 추가하는 방법 (Deployment Assembly) (0) | 2023.11.16 |
[JAVA] Map으로 전달 받은 JsonData List 목록(값) 추출하기 (0) | 2023.11.16 |