>  기사  >  Java  >  Graphics2D가 버퍼링된 이미지의 크기를 효과적으로 재조정하지 못하는 이유는 무엇입니까?

Graphics2D가 버퍼링된 이미지의 크기를 효과적으로 재조정하지 못하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-24 06:55:16606검색

Why Doesn't Graphics2D Effectively Rescale a BufferedImage?

버퍼 이미지 크기 조정

질문:

JavaDocs를 준수함에도 불구하고 Graphics2D를 사용하여 BufferedImage 크기를 조정하려는 시도는 입증되었습니다. 하찮은. 다음 코드가 사용됩니다:

BufferedImage image = MatrixToImageWriter.getBufferedImage(encoded);
Graphics2D grph = image.createGraphics();
grph.scale(2.0, 2.0);
grph.dispose();

답변:

실제 렌더링을 변경하지 않고 화면 렌더링의 크기만 조정하는 Graphics2D만 사용하면 문제가 발생할 수 있습니다. 이미지 데이터. 효과적인 이미지 크기 조정을 위해서는 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);

이 접근 방식을 사용하면 부드럽고 정확한 크기 조정 결과를 생성하는 이중선형 보간이 가능합니다.

위 내용은 Graphics2D가 버퍼링된 이미지의 크기를 효과적으로 재조정하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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