Raster — 픽셀 사각 배열 클래스

Raster — 픽셀 사각 배열 클래스 (java.awt.image)

직사각형 픽셀 배열을 나타내는 클래스예요. Raster는 샘플 값을 저장하는 DataBuffer와 저장된 샘플 값을 DataBuffer에서 어떻게 찾을지 설명하는 SampleModel을 캡슐화해요.

출처: Java API Reference

본문

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 배열이 아닐 때.

더 알아보기