FilteredImageSource — 필터링된 이미지 소스
FilteredImageSource — 필터링된 이미지 소스 (java.awt.image)
기존 이미지와 필터 객체를 받아 원본 이미지의 필터링된 새 버전에 대한 이미지 데이터를 생성하는 ImageProducer 인터페이스의 구현 클래스예요. FilteredImageSource는 여러 스레드에서 안전하게 사용할 수 있어요.
본문
FilteredImageSource는 java.lang.Object를 확장하고 ImageProducer 인터페이스를 구현해요.
예를 들어 빨강과 파랑 컴포넌트를 바꿔 이미지를 필터링할 수 있어요.
// RGBImageFilter를 사용해 빨강/파랑을 교환
ImageFilter filter = new RGBImageFilter() {
public int filterRGB(int x, int y, int rgb) {
return (rgb & 0xff00ff00)
| ((rgb & 0xff0000) >> 16)
| ((rgb & 0x0000ff) << 16);
}
};
ImageProducer producer = new FilteredImageSource(orig.getSource(), filter);
Image filtered = c.createImage(producer);
생성자
public FilteredImageSource(ImageProducer orig, ImageFilter imgf)
기존 ImageProducer와 필터 객체로 ImageProducer 객체를 구성해요.
파라미터: orig — 지정된 ImageProducer / imgf — 지정된 ImageFilter
메서드 상세
addConsumer(ImageConsumer ic)
public void addConsumer(ImageConsumer ic)
지정된 ImageConsumer를 필터링된 이미지의 데이터에 관심 있는 소비자 목록에 추가해요. 지정된 ImageConsumer를 위해 이미지 데이터를 조작할 원본 ImageFilter의 인스턴스가(필터의 getFilterInstance 메서드로) 생성돼요. 새로 만든 필터 인스턴스는 원본 ImageProducer의 addConsumer 메서드에 전달돼요. 이 메서드는 ImageProducer 인터페이스 구현의 부수 효과로 public이지만, 사용자 코드에서 호출하면 안 되고 호출 시 동작은 정의되지 않아요.
isConsumer(ImageConsumer ic)
public boolean isConsumer(ImageConsumer ic)
ImageConsumer가 현재 이 이미지의 데이터에 관심 있는 소비자 목록에 있는지 판단해요.
removeConsumer(ImageConsumer ic)
public void removeConsumer(ImageConsumer ic)
ImageConsumer를 이 이미지의 데이터에 관심 있는 소비자 목록에서 제거해요.
startProduction(ImageConsumer ic)
public void startProduction(ImageConsumer ic)
필터링된 이미지의 생성을 시작해요. 지정된 ImageConsumer가 아직 소비자가 아니라면 원본 ImageFilter의 인스턴스가(펄터의 getFilterInstance로) 생성되어 데이터를 조작하고, 그 필터 인스턴스가 원본 ImageProducer의 startProduction 메서드에 전달돼요.
requestTopDownLeftRightResend(ImageConsumer ic)
public void requestTopDownLeftRightResend(ImageConsumer ic)
주어진 ImageConsumer가 top-down, left-right 순서로 이미지 데이터를 한 번 더 받도록 요청해요. 픽셀 순서를 보존할 수 있는지가 필터에 달려 있으므로 요청은 추가 처리를 위해 ImageFilter에 전달돼요.