AlphaComposite — 알파 합성 규칙 구현

AlphaComposite — 알파 합성 규칙 구현

AlphaComposite 클래스는 소스와 목적지 색을 결합하여 그래픽과 이미지에 블렌딩 및 투명 효과를 내기 위한 기본 알파 합성(alpha compositing) 규칙을 구현해요.

출처: Java API Reference

본문

public final class AlphaComposite extends Object implements Composite

이 클래스가 구현하는 구체적인 규칙은 T. Porter와 T. Duff의 논문 "Compositing Digital Images"(SIGGRAPH 84, 253-259)에 기술된 12가지 기본 규칙이에요. 나머지 문서는 이 논문에 정의된 개념에 대한 어느 정도의 이해를 가정해요.

이 클래스는 Porter와 Duff가 정의한 표준 방정식에 추가 요소 하나를 더 포함해요. AlphaComposite 인스턴스는 블렌딩 방정식에 사용되기 전에 모든 소스 픽셀의 불투명도(opacity)나 커버리지를 수정하는 알파 값을 담을 수 있어요.

주의할 점은 Porter-Duff 방정식이 모두 대응하는 알파 성분으로 프리멀티플라이드(premultiplied)된 색 성분에 대해 동작하도록 정의된다는 거예요. ColorModelRaster는 픽셀 데이터를 프리멀티플라이드 또는 비프리멀티플라이드 형태로 저장할 수 있으므로, 방정식을 적용하기 전에 모든 입력 데이터를 프리멀티플라이드 형태로 정규화해야 해요.

대표적인 blending factor 상수로는 SRC_OVER, SRC_IN, SRC, DST_OVER 같은 12가지 정적 필드가 있어요. SRC_OVER의 경우 Fs = 1, Fd = (1 - As)로 정의돼요.

성능 면에서는 CompositeContext 객체의 compose 메서드에 전달되는 Raster 객체가 프리멀티플라이드 데이터를 갖는 것이 바람직해요. BufferedImage의 일부 불투명 이미지 타입처럼 픽셀에 알파 값을 저장하지 않는 소스도 있으므로, 정확성은 목적지에 픽셀이 저장되는 방식에 따라 달라져요.

CompositeCompositeContext와 함께 사용돼요.

더 알아보기