>  기사  >  Java  >  Java에서 ImageIO를 사용하여 JPEG 압축 수준을 제어하는 ​​방법은 무엇입니까?

Java에서 ImageIO를 사용하여 JPEG 압축 수준을 제어하는 ​​방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-25 04:28:30351검색

How to Control JPEG Compression Level Using ImageIO in Java?

Java에서 ImageIO를 사용하여 JPEG 압축 수준 설정

Java에서 ImageIO는 이미지 조작을 위한 다목적 라이브러리입니다. 그러나 이미지를 작성할 때 JPEG 압축 수준을 설정하는 명시적인 방법이 부족합니다. 이 문서에서는 ImageIO API를 사용하여 압축 품질을 조정하는 방법을 보여줌으로써 이러한 제한 사항을 해결합니다.

해결책

JPEG 압축을 제어하는 ​​한 가지 접근 방식은 ImageWriteParam 클래스를 활용하는 것입니다. 다음 단계에서는 프로세스를 간략하게 설명합니다.

  1. JPEG 형식에 대한 ImageWriter 개체를 얻습니다.
  2. ImageWriter에 대한 기본 ImageWriteParam을 검색합니다.
  3. 압축 모드를 다음으로 설정합니다. ImageWriteParam.MODE_EXPLICIT.
  4. 0.0f(최대 압축)와 1.0f(최대 품질) 사이에서 원하는 압축 품질을 지정합니다.
  5. 출력을 처리하려면 ImageOutputStream을 생성합니다.
  6. ImageWriter 출력을 ImageOutputStream으로 설정합니다.
  7. 이미지 데이터로 IIOImage 개체를 생성합니다.
  8. 사용자 정의 ImageWriteParam을 사용하여 IIOImage를 ImageOutputStream에 씁니다.
  9. ImageWriter 삭제 .

예제 코드:

<code class="java">ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next();
ImageWriteParam jpgWriteParam = jpgWriter.getDefaultWriteParam();
jpgWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
jpgWriteParam.setCompressionQuality(0.7f);

ImageOutputStream outputStream = new FileImageOutputStream(new File("output.jpg"));
jpgWriter.setOutput(outputStream);
IIOImage outputImage = new IIOImage(image, null, null);
jpgWriter.write(null, outputImage, jpgWriteParam);
jpgWriter.dispose();</code>

이 코드 조각은 명시적으로 압축 품질을 0.7로 설정하여 품질과 파일 크기가 균형을 이루는 이미지를 생성합니다. .

참고:

예제에서는 출력을 작성하기 위한 이미지 변수와 File 개체가 있다고 가정합니다. 또한 MemoryCacheImageOutputStream 클래스는 메모리 버퍼에 쓸 때 FileImageOutputStream을 대체합니다.

위 내용은 Java에서 ImageIO를 사용하여 JPEG 압축 수준을 제어하는 ​​방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.