본문 바로가기

JAVA/Spring

[JAVA] find image file size - File 이미지 크기(가로X세로) 구하기

 

 

파일의 크기가 아닌 이미지 파일의 가로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를 사용한다.