>Java >java지도 시간 >Java에서 버퍼링된 이미지의 크기를 적절하게 조정하는 방법: 리샘플링과 자르기?

Java에서 버퍼링된 이미지의 크기를 적절하게 조정하는 방법: 리샘플링과 자르기?

Linda Hamilton
Linda Hamilton원래의
2024-11-21 07:45:12491검색

How to Properly Scale a BufferedImage in Java: Resampling vs. Cropping?

BufferedImage 크기 조정: 자르기가 아닌 리샘플링 탐구

Graphics2D 클래스를 사용하여 BufferedImage 크기를 조정하려고 하면 원하는 결과를 얻지 못할 수 있습니다. 방법에 따른 제한 때문입니다. scale() 메서드는 기본 이미지 데이터를 수정하지 않고 현재 그래픽 컨텍스트를 변환합니다.

AffineTransformOp: 리샘플링을 위한 선호 솔루션

리샘플링의 경우 AffineTransformOp 클래스는 다음을 제공합니다. 보간 유형을 지정할 수 있어 유연성이 향상됩니다. 보간은 이미지 크기를 조정할 때 중간 픽셀 값을 계산하는 방법을 결정합니다. 다음은 AffineTransformOp를 사용하여 이미지 크기를 조정하는 예입니다.

BufferedImage before = getBufferedImage(encoded);
int w = before.getWidth();
int h = before.getHeight();
BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
AffineTransform at = new AffineTransform();
at.scale(2.0, 2.0);
AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
after = scaleOp.filter(before, after);

이 예에서는

  • AffineTransform은 크기 조정 변환을 정의하는 데 사용됩니다.
  • AffineTransformOp가 사용됩니다. 부드럽고 고품질의 결과를 제공하는 TYPE_BILINEAR 보간 유형을 사용합니다. 결과.
  • filter()는 변환을 적용하고 이미지를 BufferedImage 이후로 리샘플링합니다.

핵심 사항

  • 사용 이미지 자르기가 아닌 리샘플링을 위한 AffineTransformOp.
  • 적절한 선택 최적의 결과를 위한 보간 유형(예: TYPE_BILINEAR).
  • 이미지 크기 조정에 대한 추가 예와 통찰력은 관련 리소스를 참조하세요.

위 내용은 Java에서 버퍼링된 이미지의 크기를 적절하게 조정하는 방법: 리샘플링과 자르기?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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