2012-08-30 2 views
0

몇 개의 이미지를 함께 합성하고 싶습니다. 각 이미지에는 투명성이 있습니다. BufferedImage를 사용하려고하지만이 용도로 사용할 방법이없는 것 같습니다.BufferedImage.setRGB()에 알파 값을 보존하고 있습니까?

오직 BufferedImage.setRGB() 메소드 만 있습니다. 대신 투명 픽셀이 아래 픽셀 값을 덮어 쓰지 않는 무언가가 필요합니다. 어떻게 그 일을 할 수 있습니까?

감사

확인

답변

0
/* imageType should be one of the variants that includes alpha */ 
final BufferedImage composited = new BufferedImage(width, height, imageType); 
final Graphics graphics = composited.getGraphics(); 
for (final Image layer : layers) { 
    /* draw the image at 0,0 */ 
    graphics.drawImage(layer, 0, 0, null); 
} 
graphics.dispose(); 
+0

, 그냥 WritableRaster를 살펴했다, 나는() 메소드를 setPixels을 가지고 볼 수 있지만 (BufferedImage의 잘하고있다처럼 지금은) 그것은 단지 대상 래스터의 직선 덮어 쓰기를 할 것입니다 , 또는 본질적으로 알파 채널을 존중합니까? 아니면 거기에 내가 누락되어 사용해야하는 다른 방법이 있습니까? 감사! – user291701

+1

@ user291701'setPixels'는 각 요소가 샘플 인 배열을 기대합니다; ARGB의 경우 각 채널에 샘플이 필요하기 때문에 픽셀 당 4 개의 요소가 필요합니다. – oldrinb

+0

그래도 픽셀을 블렌딩하지 않고 곧바로 덮어 쓰게됩니다. WritableRaster에 추가 컴포지션을 적용 할 수있는 항목이 없습니다. 즉, 각 픽셀 값을 직접 재설정하는 것입니다. – user291701

관련 문제