MultiPixelPackedSampleModel — 멀티 픽셀 패킹 샘플 모델

MultiPixelPackedSampleModel — 멀티 픽셀 패킹 샘플 모델 (java.awt.image)

단일 밴드(single-banded) 이미지를 나타내고, 여러 개의 한 샘플 픽셀을 한 데이터 요소에 패킹할 수 있는 SampleModel 클래스예요. 픽셀은 데이터 요소를 가로지를 수 없어요.

출처: Java API Reference

본문

MultiPixelPackedSampleModeljava.awt.image.SampleModel을 확장해요. 데이터 타입은 DataBuffer.TYPE_BYTE, TYPE_USHORT, TYPE_INT일 수 있어요. 각 픽셀은 2의 거듭제곱 비트 수여야 하고, 2의 거듭제곱 개수의 픽셀이 정확히 한 데이터 요소에 들어맞아야 해요.

픽셀 비트 스트라이드는 픽셀당 비트 수와 같아요. 스캔라인 스트라이드는 데이터 요소 단위이고, 마지막 몇 개의 데이터 요소는 사용되지 않는 픽셀로 패딩될 수 있어요. 데이터 비트 오프셋은 DataBuffer 시작부터 첫 픽셀까지의 비트 오프셋이고 픽셀 비트 스트라이드의 배수여야 해요.

생성자

public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits)

지정된 데이터 타입, 너비, 높이, 픽셀당 비트 수로 MultiPixelPackedSampleModel을 구성해요.

예외: IllegalArgumentExceptiondataTypeTYPE_BYTE/TYPE_USHORT/TYPE_INT가 아닐 때

public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits, int scanlineStride, int dataBitOffset)

지정된 데이터 타입, 너비, 높이, 픽셀당 비트 수, 스캔라인 스트라이드, 데이터 비트 오프셋으로 구성해요.

예외: RasterFormatException — 픽셀당 비트 수가 2의 거듭제곱이 아니거나 2의 거듭제곱 개수의 픽셀이 한 데이터 요소에 맞지 않을 때 / IllegalArgumentExceptionw·h가 0보다 크지 않거나, dataType이 지원 타입이 아닐 때

메서드 상세

createCompatibleSampleModel(int w, int h)

public SampleModel createCompatibleSampleModel(int w, int h)

지정된 너비·높이로 새 모델을 만들어요. 새 모델은 이 모델과 같은 저장 데이터 타입과 픽셀당 비트 수를 가져요.

예외: IllegalArgumentExceptionw·h가 0보다 크지 않을 때

createDataBuffer()

public DataBuffer createDataBuffer()

이 모델에 대응하는, 같은 데이터 타입과 크기의 단일 뱅크 DataBuffer를 만들어요.

getNumDataElements() / getSampleSize() / getSampleSize(int band) / getOffset(x, y) / getBitOffset(int x) / getScanlineStride() / getPixelBitStride() / getDataBitOffset() / getTransferType()

public int getNumDataElements()
public int[] getSampleSize()
public int getSampleSize(int band)
public int getOffset(int x, int y)
public int getBitOffset(int x)
public int getScanlineStride()
public int getPixelBitStride()
public int getDataBitOffset()
public int getTransferType()

다양한 스트라이드·오프셋·크기 값을 반환해요. getNumDataElements()는 항상 1이에요. getBitOffset(x)는 스캔라인의 x번째 픽�이 저장된 데이터 요소로의 비트 오프셋으로, 모든 스캔라인에 같아요. getPixelBitStride()는 픽셀당 비트 수와 같아요. getTransferType()getDataElements/setDataElements로 픽셀을 전송하는 데 쓰는 TransferType(TYPE_BYTE/TYPE_USHORT/TYPE_INT)을 반환해요.

createSubsetSampleModel(int[] bands)

public SampleModel createSubsetSampleModel(int[] bands)

이 모델의 밴드 부분집합으로 새 모델을 만들어요. MultiPixelPackedSampleModel은 밴드가 하나뿐이므로 bands는 길이 1이고 0번째 밴드를 가리켜야 해요.

예외: RasterFormatException — 요청된 밴드 수가 하나가 아닐 때 / IllegalArgumentExceptionw·h가 0보다 크지 않을 때

getSample(int x, int y, int b, DataBuffer data) / setSample(int x, int y, int b, int s, DataBuffer data)

public int getSample(int x, int y, int b, DataBuffer data)
public void setSample(int x, int y, int b, int s, DataBuffer data)

(x, y) 픽셀의 지정된 밴드(b는 0으로 가정) 샘플을 int로 가져오거나 설정해요.

예외: ArrayIndexOutOfBoundsException — 좌표가 범위 밖일 때

getDataElements(int x, int y, Object obj, DataBuffer data) / setDataElements(...)

public Object getDataElements(int x, int y, Object obj, DataBuffer data)
public void setDataElements(int x, int y, Object obj, DataBuffer data)

TransferType 원시 배열로 단일 픽셀 데이터를 가져오거나 설정해요. 배열은 요소가 하나이고, 타입은 단일 픽셀을 담을 수 있는 TYPE_BYTE/TYPE_USHORT/TYPE_INT 중 가장 작은 것이에요.

예외: ClassCastExceptionobj가 TransferType 원시 배열이 아닐 때 / ArrayIndexOutOfBoundsException — 좌표가 범위 밖이거나 obj가 픽셀 데이터를 담기에 부족할 때

getPixel(int x, int y, int[] iArray, DataBuffer data) / setPixel(int x, int y, int[] iArray, DataBuffer data)

public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
public void setPixel(int x, int y, int[] iArray, DataBuffer data)

지정된 단일 밴드 픽셀을 int 배열의 첫 요소로 가져오거나, int 배열 입력으로 설정해요.

예외: ArrayIndexOutOfBoundsException — 좌표가 범위 밖일 때

더 알아보기