Raster — 픽셀 사각 배열 클래스
Raster — 픽셀 사각 배열 클래스 (java.awt.image)
직사각형 픽셀 배열을 나타내는 클래스예요. Raster는 샘플 값을 저장하는 DataBuffer와 저장된 샘플 값을 DataBuffer에서 어떻게 찾을지 설명하는 SampleModel을 캡슐화해요.
본문
Raster는 평면의 특정 직사각형 영역(반드시 (0, 0)을 포함하지는 않아요)을 차지하는 픽셀들의 값을 정의해요. 바운딩 사각형은 minX, minY, width, height 값으로 정의되며 getBounds 메서드로 얻을 수 있어요. 바운딩 사각형 밖의 픽셀을 참조하면 예외가 발생하거나 의도하지 않은 DataBuffer 요소를 참조할 수 있어요.
SampleModel은 Raster의 샘플이 DataBuffer의 기본 배열 요소에 어떻게 저장되는지 설명해요. 샘플은 PixelInterleavedSampleModel·BandedSampleModel처럼 데이터 요소당 하나씩, 또는 SinglePixelPackedSampleModel·MultiPixelPackedSampleModel처럼 한 요소에 여러 개가 패킹되어 저장될 수 있어요. SampleModel은 샘플이 부호 확장되는지도 제어해서, unsigned 데이터를 byte, short, int 같은 signed Java 데이터 타입에 저장할 수 있게 해요.
모든 생성자는 protected예요. Raster를 만드는 올바른 방법은 이 클래스의 정적 create 메서드 중 하나를 쓰는 거예요.
필드
| 필드 | 설명 |
|---|---|
sampleModel |
Raster의 픽셀이 DataBuffer에 저장되는 방식을 설명하는 SampleModel |
dataBuffer |
이미지 데이터를 저장하는 DataBuffer |
minX / minY |
이 Raster의 왼쪽 위 픽셀 좌표 |
width / height |
이 Raster의 너비 / 높이 |
sampleModelTranslateX / sampleModelTranslateY |
Raster의 SampleModel 좌표 공간에서 Raster로의 X / Y 변환 |
numBands |
Raster의 밴드 수 |
numDataElements |
픽셀당 DataBuffer 데이터 요소 수 |
parent |
이 Raster의 부모, 또는 null |
생성자
protected Raster(SampleModel sampleModel, Point origin)
protected Raster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin)
protected Raster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion, Point sampleModelTranslate, Raster parent)
주어진 SampleModel·DataBuffer·부모로 Raster를 구성해요. 세 번째 생성자는 일반적으로 다른 생성자나 create 메서드가 호출해야 하며 직접 사용하면 안 돼요.
예외: RasterFormatException — 정수 오버플로우 발생 시, NullPointerException — 관련 인자가 null일 때
주요 정적 create 메서드
createInterleavedRaster(...)—PixelInterleavedSampleModel기반 Raster 생성 (현재TYPE_BYTE·TYPE_USHORT만 지원)createBandedRaster(...)—BandedSampleModel기반 Raster 생성 (TYPE_BYTE·TYPE_USHORT·TYPE_INT)createPackedRaster(...)—SinglePixelPackedSampleModel또는MultiPixelPackedSampleModel기반 Raster 생성createRaster(SampleModel sm, DataBuffer db, Point location)— 지정된 SampleModel·DataBuffer로 Raster 생성createWritableRaster(...)— 지정된 SampleModel·DataBuffer로WritableRaster생성
예외: IllegalArgumentException — 지원하지 않는 dataType, w·h가 0 이하인 경우, 밴드 수 관련 오류 등, RasterFormatException — 정수 오버플로우 또는 dataBuffer 뱅크가 하나를 초과할 때, NullPointerException — 필수 인자 null
인스턴스 메서드
getParent()— 이 Raster의 부모 Raster(있으면) 또는 null 반환getSampleModelTranslateX()/getSampleModelTranslateY()— SampleModel 좌표계에서 Raster 좌표계로의 X / Y 변환 반환createCompatibleWritableRaster(...)— 같은 크기·SampleModel·새 DataBuffer를 가진 호환 WritableRaster 생성createTranslatedChild(int childMinX, int childMinY)— 같은 크기·SampleModel·DataBuffer를 가지지만 위치가 다른 새 Raster 생성createChild(int parentX, int parentY, int width, int height, int childMinX, int childMinY, int[] bandList)— 이 Raster의 DataBuffer 일부 또는 전부를 공유하는 새 Raster 반환getBounds()— 이 Raster의 바운딩 Rectangle 반환getMinX()/getMinY()/getWidth()/getHeight()— 각 최소 좌표·너비·높이 반환getNumBands()/getNumDataElements()— 밴드 수 / 데이터 요소 수 반환getTransferType()— 픽셀 전송에 쓰이는 TransferType 반환getDataBuffer()/getSampleModel()— 연결된 DataBuffer / SampleModel 반환getDataElements(int x, int y, Object outData)— 단일 픽셀 데이터를 TransferType 기본 배열로 반환getDataElements(int x, int y, int w, int h, Object outData)— 지정된 픽셀 사각형 데이터 반환getPixel(int x, int y, int[]/float[]/double[] array)— 지정된 픽셀의 샘플을 배열로 반환getPixels(int x, int y, int w, int h, int[]/float[]/double[] array)— 픽셀 사각형의 모든 샘플을 배열로 반환getSample(int x, int y, int b)— (x,y) 픽셀의 지정된 밴드 샘플을 int로 반환getSampleFloat(...)/getSampleDouble(...)— 지정된 밴드 샘플을 float / double로 반환getSamples(int x, int y, int w, int h, int b, int[]/float[]/double[] array)— 사각형의 지정된 밴드 샘플을 배열로 반환
예외 (데이터 접근 메서드): ArrayIndexOutOfBoundsException — 좌표가 범위 밖이거나 출력 배열이 너무 작을 때. 좌표가 범위를 벗어나면 ClassCastException — 입력 객체가 TransferType 배열이 아닐 때.