PixelInterleavedSampleModel — 픽셀 인터리브 샘플 모델
PixelInterleavedSampleModel — 픽셀 인터리브 샘플 모델 (java.awt.image)
픽셀 인터리브(pixel interleaved) 방식으로 저장되고, 픽셀의 각 샘플이 DataBuffer의 한 데이터 요소를 차지하는 이미지 데이터를 나타내는 클래스예요.
본문
PixelInterleavedSampleModel은 java.awt.image.ComponentSampleModel을 확장해요. ComponentSampleModel보다 픽셀 인터리브 이미지 데이터에 접근하는 더 효율적인 구현을 제공해요. 이 클래스는 모든 밴드의 샘플 데이터를 DataBuffer의 단일 뱅크에 저장해요.
주요 개념: 픽셀 스트라이드는 같은 스캔라인의 같은 밴드에 대한 두 샘플 사이의 데이터 배열 요소 수, 스캔라인 스트라이드는 주어진 샘플과 다음 스캔라인의 같은 열에 있는 대응 샘플 사이의 데이터 배열 요소 수, 밴드 오프셋은 각 밴드를 담는 뱅크의 첫 데이터 배열 요소부터 그 밴드의 첫 샘플까지의 요소 수예요. 밴드는 0부터 N-1까지 번호가 매겨져요. 뱅크 인덱스는 데이터 버퍼의 뱅크와 이미지 데이터 밴드 사이의 대응을 나타내요.
이 클래스는 TYPE_BYTE, TYPE_USHORT, TYPE_SHORT, TYPE_INT, TYPE_FLOAT, TYPE_DOUBLE 데이터 타입을 지원해요.
생성자
public PixelInterleavedSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bandOffsets)
지정된 파라미터로 PixelInterleavedSampleModel을 구성해요. 밴드 수는 bandOffsets 배열의 길이로 주어져요.
예외: IllegalArgumentException — w·h가 0보다 크지 않을 때, 어떤 밴드 사이 오프셋이 스캔라인 스트라이드보다 클 때, pixelStride * w가 scanlineStride보다 클 때, pixelStride가 어떤 밴드 사이 오프셋보다 작을 때, dataType이 지원 타입이 아닐 때
메서드 상세
createCompatibleSampleModel(int w, int h)
public SampleModel createCompatibleSampleModel(int w, int h)
지정된 너비·높이로 새 PixelInterleavedSampleModel을 만들어요. 새 모델은 이 모델과 같은 밴드 수, 저장 데이터 타입, 픽셀 스트라이드를 가져요. 밴드 오프셋은 모든 밴드 오프셋의 최솟값이 0이 되도록 압축될 수 있어요.
예외: IllegalArgumentException — w·h가 0보다 크지 않을 때
createSubsetSampleModel(int[] bands)
public SampleModel createSubsetSampleModel(int[] bands)
이 PixelInterleavedSampleModel의 밴드 부분집합으로 새 모델을 만들어요. 새 모델은 기존 모델과 함께 쓸 수 있는 DataBuffer와 함께 쓸 수 있어요. 새 조합은 원본 조합의 밴드 부분집합을 가진 이미지를 나타내요.
반환값: 이 ComponentSampleModel의 밴드 부분집합으로 만들어진 ComponentSampleModel