ColorConvertOp — 색 변환 연산
ColorConvertOp — 색 변환 연산 (java.awt.image)
소스 이미지의 데이터를 픽셀 단위로 색 변환하는 클래스예요. 결과 색 값은 목적지 이미지의 정밀도로 스케일링돼요. 색 변환은 ColorSpace 객체 배열이나 ICC_Profile 객체 배열로 지정할 수 있어요.
본문
ColorConvertOp는 java.lang.Object를 확장하고 BufferedImageOp, RasterOp 인터페이스를 구현해요.
소스가 프리멀티플라이 알파를 가진 BufferedImage면 색 변환 전에 색 컴포넌트를 알파 컴포넌트로 나눠요. 목적지가 프리멀티플라이 알파를 가진 BufferedImage면 변환 후 색 컴포넌트를 알파 컴포넌트로 곱해요. Raster는 알파 채널이 없는 것으로 취급돼요, 즉 모든 밴드가 색 밴드예요.
생성자에 RenderingHints 객체를 지정하면 색 렌더링 힌트와 디더링 힌트로 색 변환을 제어할 수 있어요. 소스와 목적지는 같은 객체일 수 있어요.
생성자
public ColorConvertOp(RenderingHints hints)
소스 색 공간에서 목적지 색 공간으로 변환하는 새 ColorConvertOp를 구성해요. RenderingHints 인자는 null일 수 있어요. 이 Op는 BufferedImage에만 사용할 수 있고, 소스 이미지의 ColorSpace에서 목적지의 것으로 직접 변환해요. filter 메서드의 목적지 인자는 null로 지정할 수 없어요.
public ColorConvertOp(ColorSpace cspace, RenderingHints hints)
ColorSpace 객체로 새 ColorConvertOp를 구성해요. 주로 filter가 목적지 인자 null로 호출될 때 유용한데, 그 경우 cspace가 filter가 만드는 목적지의 목적지 색 공간을 정의해요. 그 외에는 소스가 목적지 공간으로 변환되기 전에 거치는 중간 공간을 정의해요.
예외: NullPointerException — cspace가 null일 때
public ColorConvertOp(ColorSpace srcCspace, ColorSpace dstCspace, RenderingHints hints)
두 ColorSpace 객체로 구성해요. 주로 Raster에서 filter를 호출할 때 유용한데, 두 ColorSpace가 Raster에 수행될 연산을 정의해요. 그 경우 소스 Raster의 밴드 수는 srcCspace의 컴포넌트 수와 일치해야 하고, 목적지 Raster의 밴드 수는 dstCspace의 컴포넌트 수와 일치해야 해요. BufferedImage의 경우 두 ColorSpace는 소스가 목적지 공간으로 변환되기 전에 지나는 중간 공간을 정의해요.
예외: NullPointerException — srcCspace나 dstCspace가 null일 때
public ColorConvertOp(ICC_Profile[] profiles, RenderingHints hints)
ICC_Profile 배열로 구성해요. 프로필 시퀀스는 색 공간을 나타내는 프로필, 효과를 나타내는 프로필 등을 포함할 수 있어요. 시퀀스 전체가 잘 정의된 색 변환을 나타내지 않으면 예외가 던져져요.
BufferedImage의 경우 소스의 ColorSpace가 배열의 첫 프로필 요구와 맞지 않으면 첫 변환은 적절한 ColorSpace로 진행돼요. 목적지의 ColorSpace가 마지막 프로필 요구를 만족하지 못하면 마지막 변환은 목적지의 ColorSpace로 진행돼요. Raster의 경우 소스 Raster의 밴드 수가 첫 프로필 요구와, 목적지 Raster의 밴드 수가 마지막 프로필 요구와 일치해야 해요. 배열은 최소 두 요소여야 하며, 아니면 Raster용 filter 호출 시 IllegalArgumentException이 던져져요.
예외: IllegalArgumentException — 프로필 시퀀스가 잘 정의된 색 변환을 지정하지 않을 때 / NullPointerException — profiles가 null일 때
메서드 상세
getICC_Profiles()
public final ICC_Profile[] getICC_Profiles()
이 ColorConvertOp를 구성하는 데 사용된 ICC_Profile 배열을 반환해요. 배열로 구성되지 않았다면 null을 반환해요.
filter(BufferedImage src, BufferedImage dest)
public final BufferedImage filter(BufferedImage src, BufferedImage dest)
소스 BufferedImage를 색 변환해요. 목적지가 null이면 적절한 ColorModel로 BufferedImage를 만들어요.
예외: IllegalArgumentException — dest가 null인데 이 op가 RenderingHints 인자만 받는 생성자로 구성됐을 때(연산이 잘 정의되지 않으므로)
filter(Raster src, WritableRaster dest)
public final WritableRaster filter(Raster src, WritableRaster dest)
소스 Raster의 이미지 데이터를 색 변환해요. 목적지가 null이면 새 Raster를 만들어요. 소스·목적지 Raster의 밴드 수는 위의 요구를 만족해야 하고, 생성자에서 소스·목적지 색 공간을 정의하기에 충분한 정보를 제공했어야 해요.
예외: IllegalArgumentException — 소스·목적지 밴드 수가 틀리거나, 색 공간이 정의되지 않았거나, op가 BufferedImage 연산에만 적용되는 생성자로 구성됐을 때
getBounds2D(BufferedImage src) / getBounds2D(Raster src)
public final Rectangle2D getBounds2D(BufferedImage src)
public final Rectangle2D getBounds2D(Raster src)
주어진 소스에 대한 목적지의 경계 상자를 반환해요. 기하 연산이 아니므로 소스의 경계 상자와 같아요.
createCompatibleDestImage / createCompatibleDestRaster
public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM)
public WritableRaster createCompatibleDestRaster(Raster src)
주어진 소스에 대한 올바른 크기와 밴드 수의 0으로 채워진 목적지를 만들어요. destCM이 null이면 적절한 ColorModel이 사용돼요.
getPoint2D(Point2D srcPt, Point2D dstPt)
public final Point2D getPoint2D(Point2D srcPt, Point2D dstPt)
소스의 한 점에 대한 목적지 점의 위치를 반환해요. 이 클래스에서는 목적지 점이 소스 점과 같아요.
getRenderingHints()
public final RenderingHints getRenderingHints()
이 op가 사용하는 렌더링 힌트를 반환해요.