RescaleOp — 리스케일 연산 클래스

RescaleOp — 리스케일 연산 클래스 (java.awt.image)

소스 이미지의 데이터를 픽셀 단위로 리스케일링하는 클래스예요.

출처: Java API Reference

본문

RescaleOpObject를 확장하고 BufferedImageOp, RasterOp를 구현해요. 각 픽셀의 샘플 값에 스케일 인자를 곱한 뒤 오프셋을 더해 소스 이미지의 데이터를 픽셀 단위로 리스케일링해요. 스케일링된 샘플 값은 목적지 이미지에서 표현 가능한 최솟값/최댓값으로 클립돼요.

Raster에서 리스케일링은 밴드에 대해 동작해요. 스케일링 상수 집합 수는 하나(같은 상수를 모든 밴드에 적용)이거나 소스 Raster 밴드 수와 같아야 해요. BufferedImage에서는 색과 알파 성분에 대해 동작해요.

프리멀티플라이드(premultiplied) 알파 데이터를 가진 BufferedImage 소스는 리스케일링 목적상 비-프리멀티플라이드 이미지와 같은 방식으로 처리돼요. IndexColorModel을 가진 이미지는 리스케일링할 수 없어요. 생성자에서 RenderingHints 객체를 지정하면 색 변환이 필요할 때 색 렌더링 힌트와 디서링 힌트를 쓸 수 있어요. 제자리(in-place) 연산(소스와 목적지가 같은 객체)도 허용돼요.

생성자

public RescaleOp(float[] scaleFactors, float[] offsets, RenderingHints hints)
public RescaleOp(float scaleFactor, float offset, RenderingHints hints)

원하는 스케일 인자와 오프셋으로 새 RescaleOp를 구성해요. 배열 길이는 클래스 설명의 제약을 충족해야 해요. hints는 null일 수 있어요.

메서드

  • getScaleFactors(float[] scaleFactors) / getOffsets(float[] offsets) — 주어진 배열에 스케일 인자 / 오프셋 반환. null이면 새 배열 할당
  • getNumFactors() — 이 RescaleOp에 사용되는 스케일 인자·오프셋 수 반환
  • filter(BufferedImage src, BufferedImage dst) — 소스 BufferedImage 리스케일. 소스·목적지 색 모델이 다르면 목적지에서 픽셀 변환. dst null이면 소스 ColorModel로 BufferedImage 생성. 예외: IllegalArgumentException — src의 ColorModel이 IndexColorModel이거나, 스케일 인자·오프셋 수가 요구사항을 충족하지 않거나, 소스·목적지 크기가 다를 때
  • filter(Raster src, WritableRaster dst) — 소스 Raster 픽셀 데이터 리스케일. dst null이면 새 Raster 생성. 소스·목적지가 같은 밴드 수여야 함. 예외: IllegalArgumentException — 밴드 수가 다르거나, 인자 수 요구사항 미충족, 크기 차이
  • getBounds2D(BufferedImage src) / getBounds2D(Raster src) — 리스케일된 목적지의 바운딩 박스 반환. 기하 연산이 아니므로 바운딩 박스는 변하지 않아요
  • createCompatibleDestImage(BufferedImage src, ColorModel destCM) — 올바른 크기·밴드 수의 0으로 채워진 목적지 이미지 생성. destCM null이면 소스 ColorModel 사용
  • createCompatibleDestRaster(Raster src) — 올바른 크기·밴드 수의 0으로 채워진 목적지 Raster 생성
  • getPoint2D(Point2D srcPt, Point2D dstPt) — 소스 점이 주어졌을 때 목적지 점 위치 반환. 기하 연산이 아니므로 srcPt와 동일
  • getRenderingHints() — 이 연산의 렌더링 힌트 반환

더 알아보기