본문 바로가기
프로그래밍/JAVA

[JAVA] 파일 업로드 이미지 Quality 변경하기

by yun5o 2023. 2. 18.

이미지 파일을 업로드하면서 용량을 줄이고 싶을 때는 ImageWriteParam을 사용하여 변경할 수 있습니다.

먼저 변경할 file을 선언하고 BufferedImage를 사용하여 불러옵니다.

File file = new File("/path/img.jpg");
BufferedImage image = ImageIO.read(file);
OutputStream os = new FileOutputStream(file);
ImageOutputStream ios = ImageIO.createImageOutputStream(os);

Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
if (!writers.hasNext()) {
    throw new IllegalStateException("No writers found");
}
ImageWriter writer = writers.next();
writer.setOutput(ios);

 

setCompressionQuality에 설정할 Quality를 0~1 사이로 입력할 수 있습니다.

0에 가까워 질 수록 압축률이 높아집니다. (용량↓)

ImageWriteParam param = writer.getDefaultWriteParam();

param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.7f);

 

ImageWriter로 file을 새로 생성한 후 사용한 클래스를 닫아줍니다.

writer.write(null, new IIOImage(image, null, null), param);

os.close();
ios.close();
writer.dispose();

댓글