ImageFilter — 이미지 필터
ImageFilter — 이미지 필터 (java.awt.image)
ImageProducer에서 ImageConsumer로 데이터를 전달하는 데 쓰이는 일련의 인터페이스 메서드에 대한 필터를 구현하는 클래스예요. FilteredImageSource 객체와 함께 사용해 기존 이미지의 필터링된 버전을 만들도록 설계됐어요.
본문
ImageFilter는 java.lang.Object를 확장하고 ImageConsumer, Cloneable을 구현해요. 직접 알려진 서브클래스로 BufferedImageFilter, CropImageFilter, ReplicateScaleFilter, RGBImageFilter가 있어요.
통과시키는 데이터에 아무 효과가 없는 "Null 필터"를 구현하는 데 필요한 호출을 제공하는 베이스 클래스예요. 필터는 이 클래스를 서브클래스로 삼고, 필터링해야 하는 데이터를 다루는 메서드를 오버라이드해 필요에 따라 수정해야 해요.
필드
consumer— 이ImageFilter인스턴스가 데이터를 필터링하고 있는 특정 이미지 데이터 스트림의 소비자. 생성자에서 초기화되지 않고,FilteredImageSource가 특정 이미지 데이터 스트림을 위해 이 객체의 고유 인스턴스를 만들 때getFilterInstance()호출 중에 초기화돼요.
생성자
public ImageFilter()
ImageFilter를 구성해요.
메서드 상세
getFilterInstance(ImageConsumer ic)
public ImageFilter getFilterInstance(ImageConsumer ic)
지정된 ImageConsumer를 위해 실제로 필터링을 수행할 ImageFilter 객체의 고유 인스턴스를 반환해요. 기본 구현은 이 객체를 복제(clone)해요.
참고: 이 메서드는 픽셀이 필터링되는 이미지의
ImageProducer가 호출하도록 의도된 메서드예요. 직접 호출은 필터링 연산을 방해할 수 있어요.
setDimensions(int width, int height) / setProperties(Hashtable) / setColorModel(ColorModel) / setHints(int) / setPixels(...) / imageComplete(int)
이 메서드들은 ImageConsumer 인터페이스의 해당 메서드에서 제공되는 정보를 필터링해요. setProperties는 소스 객체가 거쳐 온 필터 스트림을 나타내는 프로퍼티를 추가한 후 소스 객체의 프로퍼티를 전달해요.
setProperties(props)— 예외:NullPointerException—props가null일 때setDimensions(width, height)—width/height(소스 이미지 크기)setColorModel(model)— 지정된ColorModelsetHints(hints)— 소비자가 픽셀을 처리할 때 사용하는 힌트 집합setPixels(x, y, w, h, model, byte[]/int[] pixels, off, scansize)— 픽셀 좌표/크기,ColorModel, 픽셀 배열, 오프셋, 스캔라인 스트라이드imageComplete(status)— 이미지 로딩 상태
참고: 이 메서드들도 픽셀이 필터링되는 이미지의
ImageProducer가 호출하도록 의도됐어요. 직접 호출은 필터링 연산을 방해할 수 있어요.
resendTopDownLeftRight(ImageProducer ip)
public void resendTopDownLeftRight(ImageProducer ip)
ImageConsumer의 TDLR(top-down, left-right) 순서 재전송 요청에 응답해요. 이 ImageFilter에 의해 공급되는 ImageConsumer가 TDLR 순서 재전송을 요청하면 FilteredImageSource가 이 메서드를 호출해요. 세 가지 가능성이 있어요:
- 오버라이드하지 않음: 기본 구현은 어떤 필터가 요청을 나타내는
ImageConsumer로 지정된ImageProducer에 요청을 전달해요. 상류 생산자가 TDLR 순서로 보내면 필터가 TDLR 순서로 전달할 수 있다고 판단할 때 적절해요(즉 필터가 생성된 픽셀을 다른 방식으로 재배치하지 않을 때). - 그냥 데이터를 보내도록 오버라이드: 생성된 픽셀이 버퍼에 저장된 경우처럼 필터가 요청을 스스로 처리할 수 있을 때 적절해요.
- 아무것도 안 하도록 오버라이드: 필터가 TDLR 순서로 필터링된 데이터를 만들 수 없을 때 적절해요.
예외: NullPointerException — ip가 null일 때
clone()
public Object clone()
이 객체를 복제해요.