ImageFilter — 이미지 필터

ImageFilter — 이미지 필터 (java.awt.image)

ImageProducer에서 ImageConsumer로 데이터를 전달하는 데 쓰이는 일련의 인터페이스 메서드에 대한 필터를 구현하는 클래스예요. FilteredImageSource 객체와 함께 사용해 기존 이미지의 필터링된 버전을 만들도록 설계됐어요.

출처: Java API Reference

본문

ImageFilterjava.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)예외: NullPointerExceptionpropsnull일 때
  • setDimensions(width, height)width/height(소스 이미지 크기)
  • setColorModel(model) — 지정된 ColorModel
  • setHints(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 순서로 필터링된 데이터를 만들 수 없을 때 적절해요.

예외: NullPointerExceptionipnull일 때

clone()

public Object clone()

이 객체를 복제해요.

더 알아보기