SinglePixelPackedSampleModel — 단일 픽셀 패킹 샘플 모델 클래스
SinglePixelPackedSampleModel — 단일 픽셀 패킹 샘플 모델 클래스 (java.awt.image)
단일 픽셀을 구성하는 N개 샘플이 단일 데이터 배열 요소에 저장되고, 각 데이터 배열 요소가 한 픽셀의 샘플만 담는 픽셀 데이터를 나타내는 클래스예요.
본문
SinglePixelPackedSampleModel은 SampleModel을 확장해요. 이 클래스는 TYPE_BYTE, TYPE_USHORT, TYPE_INT 데이터 타입을 지원해요. 모든 데이터 배열 요소는 DataBuffer의 첫 번째 뱅크에 있어요. 스캔라인 스트라이드는 주어진 샘플과 다음 스캔라인의 같은 열에 있는 대응 샘플 사이의 데이터 배열 요소 수예요. 비트 마스크는 픽셀의 밴드를 나타내는 샘플을 추출하는 데 필요한 마스크이고, 비트 오프셋은 픽셀의 밴드를 나타내는 샘플의 데이터 배열 요소 안 비트 오프셋이에요.
생성자
public SinglePixelPackedSampleModel(int dataType, int w, int h, int[] bitMasks)
public SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bitMasks)
bitMasks.length 만큼의 밴드를 가진 SinglePixelPackedSampleModel을 구성해요. 각 샘플은 대응하는 비트 마스크 위치의 데이터 배열 요소에 저장돼요. 각 비트 마스크는 연속해야 하고 마스크들이 겹치면 안 돼요. 데이터 타입 용량을 초과하는 비트 마스크는 잘라져요.
예외: IllegalArgumentException — dataType이 TYPE_BYTE·TYPE_USHORT·TYPE_INT가 아닐 때, w·h가 0보다 크지 않을 때, bitMask의 어떤 마스크가 연속하지 않을 때
메서드
getNumDataElements()— 픽셀 전송에 필요한 데이터 요소 수 반환. SinglePixelPackedSampleModel에선 1createCompatibleSampleModel(int w, int h)— 같은 저장 데이터 타입·비트 마스크를 가진 새 모델 생성. 예외:IllegalArgumentException— w·h가 0 이하createDataBuffer()— 이 모델에 대응하는 DataBuffer 생성 (단일 뱅크, 데이터 타입·크기 일치)getSampleSize()/getSampleSize(int band)— 모든 밴드 / 지정된 밴드의 샘플당 비트 수 반환getOffset(int x, int y)— 픽셀 (x,y)의 오프셋(데이터 배열 요소) 반환getBitOffsets()/getBitMasks()— 모든 밴드의 비트 오프셋 / 비트 마스크 반환getScanlineStride()— 스캔라인 스트라이드 반환createSubsetSampleModel(int[] bands)— 밴드 부분집합을 가진 새 모델 생성. 예외:RasterFormatException— bands 길이가 샘플 모델 밴드 수보다 클 때getDataElements(int x, int y, Object obj, DataBuffer data)— 단일 픽셀 데이터 반환. 하나의 요소 배열이고 타입은 저장 데이터 타입과 같음getPixel(int x, int y, int[] iArray, DataBuffer data)— 지정된 픽셀의 모든 샘플을 int 배열로 반환getPixels(...)— 픽셀 사각형의 모든 샘플 반환getSample(int x, int y, int b, DataBuffer data)— (x,y) 픽셀의 지정된 밴드 샘플을 int로 반환getSamples(...)— 사각형의 지정된 밴드 샘플 반환setDataElements(...)— 단일 픽셀 데이터 설정 (첫 요소만 유효 데이터, 배열 타입은 저장 데이터 타입과 같아야 함)setPixel(...)/setPixels(...)— int 배열로 픽셀 / 픽셀 사각형 설정setSample(...)/setSamples(...)— 밴드 샘플 설정
예외 (데이터 접근): ArrayIndexOutOfBoundsException — 좌표 범위 밖, ClassCastException — obj가 TransferType 배열이 아닐 때