이미지 파일을 업로드하면서 용량을 줄이고 싶을 때는 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();
'프로그래밍 > JAVA' 카테고리의 다른 글
Spring Boot 텍스트 Captcha 적용 방법 (0) | 2024.08.16 |
---|---|
[JAVA] charset에 따른 bytes 길이 구하기 (0) | 2023.05.29 |
[JAVA] 자바8에서 자바11로 버전 변경하기 (0) | 2022.08.16 |
[JAVA] 결제모듈 세션 만료 오류 (0) | 2020.08.24 |
댓글