AreaAveragingScaleFilter — 영역 평균 스케일 필터

AreaAveragingScaleFilter — 영역 평균 스케일 필터 (java.awt.image)

최근접 이웃(nearest neighbor) 알고리즘보다 더 부드러운 결과를 내는 단순한 영역 평균(area averaging) 알고리즘으로 이미지를 스케일링하는 ImageFilter 클래스예요.

출처: Java API Reference

본문

AreaAveragingScaleFilterjava.awt.image.ReplicateScaleFilter를 확장해요.

이 클래스는 기본 ImageFilter 클래스를 확장해 기존 이미지를 스케일링하고, 리샘플링된 이미지를 담은 새 이미지의 소스를 제공해요. 소스 이미지의 픽셀을 블렌딩해 지정된 크기의 이미지 픽셀을 만들어요. 블렌딩 과정은 소스 이미지를 픽셀 복제로 목적지 크기의 배수로 확대한 다음, 초대형 이미지에서 목적지 이미지의 주어진 픽셀 안에 들어오는 모든 픽셀을 단순히 평균 내어 목적지 크기로 다시 축소하는 것과 유사해요.

소스 데이터가 TopDownLeftRight 순서로 전달되지 않으면, 필터는 단순 픽셀 복제 동작으로 물러나고 마지막에 requestTopDownLeftRightResend() 메서드를 사용해 픽셀을 더 잘 다시 필터링해요.

FilteredImageSource 객체와 함께 사용해 기존 이미지의 스케일된 버전을 만들도록 설계됐어요. 구현 의존성 때문에 플랫폼에 따라 필터링된 이미지의 픽셀 값에 차이가 있을 수 있어요.

ReplicateScaleFilter에서 선언된 필드로는 destHeight, destWidth, outpixbuf, srccols, srcHeight, srcrows, srcWidth가 있어요. ImageFilter에서 선언된 필드로는 consumer가 있어요.

생성자

public AreaAveragingScaleFilter(int width, int height)

widthheight 파라미터로 지정된 크기로 소스 이미지의 픽셀을 스케일링하는 AreaAveragingScaleFilter를 구성해요.

파라미터: width — 이미지를 스케일링할 대상 너비 / height — 대상 높이

예외: IllegalArgumentExceptionwidthheight가 0일 때

메서드 상세

setHints(int hints)

public void setHints(int hints)

평균 알고리즘이 작업을 수행할 수 있게 필요한 힌트와 함께 데이터가 전달되고 있는지 감지해요.

참고: 이 메서드는 픽셀이 필터링되는 이미지의 ImageProducer가 호출하도록 의도된 메서드예요. 이 클래스로 이미지의 픽셀을 필터링하는 개발자는 이 메서드를 직접 호출하지 않는 게 좋아요. 필터링 연산을 방해할 수 있기 때문이에요.

파라미터: hintsImageConsumer가 픽셀을 처리할 때 사용하는 힌트 집합

setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off, int scansize)

public void setPixels(int x, int y, int w, int h,
                      ColorModel model, byte[] pixels, int off, int scansize)

전달된 byte 픽셀의 컴포넌트를 누적 배열에 결합하고, 완성된 픽셀 행에 대해 평균된 데이터를 전달해요. setHints 호출에서 올바른 힌트가 지정되지 않았다면, 전달 힌트와 무관하게 픽셀을 스케일링할 수 있는 슈퍼클래스에 작업을 위임해요.

setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off, int scansize)

public void setPixels(int x, int y, int w, int h,
                      ColorModel model, int[] pixels, int off, int scansize)

전달된 int 픽셀의 컴포넌트를 누적 배열에 결합하고, 완성된 픽셀 행에 대해 평균된 데이터를 전달해요. setHints에서 올바른 힌트가 지정되지 않았다면, 전달 힌트와 무관하게 스케일링하는 슈퍼클래스에 작업을 위임해요.

setPixels 메서드 모두 x — 설정할 픽셀 영역의 왼쪽 위 X 좌표, y — 왼쪽 위 Y 좌표, w — 픽셀 영역 너비, h — 픽셀 영역 높이, model — 지정된 ColorModel, pixels — 픽셀 배열, off — 픽셀 배열의 오프셋, scansize — 픽셀 배열에서 한 픽셀 행에서 다음 행까지의 거리를 파라미터로 받아요.

더 알아보기