ImageObserver — 이미지 관찰자 인터페이스
ImageObserver — 이미지 관찰자 인터페이스 (java.awt.image)
이미지가 구성되는 동안 이미지 정보에 대한 알림을 받기 위한 비동기 업데이트 인터페이스예요.
본문
ImageObserver를 구현하는 알려진 클래스는 Component, JComponent와 그 서브클래스 등 수많은 AWT/Swing 컴포넌트예요. 이미지가 비동기적으로 로드·구성되는 동안 해당 이미지에 대한 정보(크기, 프레임 등)가 준비될 때마다 imageUpdate 콜백으로 통지를 받아요.
필드 (infoflags 상수)
| 필드 | 설명 |
|---|---|
WIDTH |
기본 이미지의 너비가 준비됨. imageUpdate 콜백의 width 인자에서 얻음. |
HEIGHT |
기본 이미지의 높이가 준비됨. imageUpdate의 height 인자에서 얻음. |
PROPERTIES |
이미지의 프로퍼티가 준비됨. |
SOMEBITS |
이미지의 스케일된 변형을 그리는 데 필요한 더 많은 픽셀이 준비됨. 새 픽셀의 경계 상자는 x, y, width, height 인자에서 얻음. |
FRAMEBITS |
이전에 그린 다중 프레임 이미지의 또 다른 완전한 프레임을 다시 그릴 수 있음. x, y, width, height 인자는 무시해야 함. |
ALLBITS |
이전에 그린 정적 이미지가 완료되어 최종 형태로 다시 그릴 수 있음. 위치·크기 인자는 무시해야 함. |
ERROR |
비동기적으로 추적하던 이미지에 오류가 발생함. 더 이상 정보가 없고 이미지를 그리면 실패함. 편의상 ABORT 플래그도 동시에 표시됨. |
ABORT |
추적하던 이미지가 생산 완료 전에 중단됨. ERROR 플래그가 함께 설정되지 않았다면 이미지 데이터에 접근하면 생산이 (아마 처음부터) 다시 시작됨. |
메서드 상세
imageUpdate(Image img, int infoflags, int x, int y, int width, int height)
boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height)
이전에 비동기 인터페이스로 요청한 이미지에 대한 정보가 준비되면 호출되는 메서드예요. 비동기 인터페이스는 ImageObserver 객체를 인자로 받는 getWidth(ImageObserver)나 drawImage(img, x, y, ImageObserver) 같은 메서드 호출이에요. 그 메서드들은 호출자가 전체 이미지 자체(모든 이미지(getWidth(ImageObserver)의 경우) 또는 이미지의 출력 버전(drawImage 호출의 경우))에 대한 정보에 관심이 있음을 등록해요.
추가 업데이트가 필요하면 true, 필요한 정보를 모두 얻었으면 false를 반환해야 해요. 추적하던 이미지는 img 인자로 전달돼요. 여러 상수가 결합되어 infoflags 인자를 형성하며, 이는 이미지에 대한 어떤 정보가 준비됐는지 나타내요. x, y, width, height 인자의 해석은 infoflags의 내용에 따라 달라져요.
infoflags 인자는 WIDTH, HEIGHT, PROPERTIES, SOMEBITS, FRAMEBITS, ALLBITS, ERROR, ABORT 플래그의 비트별 포함 OR이어야 해요.
파라미터: img — 관찰 중인 이미지 / infoflags — 위 플래그들의 비트별 포함 OR / x — x 좌표 / y — y 좌표 / width — 너비 / height — 높이
반환값: infoflags가 이미지가 완전히 로드됐음을 나타내면 false, 그렇지 않으면 true