나는 두 개의 RenderedImages
을 가지고 있습니다. 이 두 이미지를 사용하여 Overlay Operation
을 만들고 싶습니다. 따라서 데이터 유형과 밴드 수를 일치시켜야합니다.
하나의 이미지에 3 개의 밴드 (RGB)가 있고 두 번째 이미지에 4 개의 밴드 (ARGB)가 있다는 문제가 있습니다.JAI RenderedImage에 알파 채널 추가
제 질문은 어떻게 할 수 있습니다 첫 번째 이미지에 알파 채널을 추가 할 수 있습니까? Overlay Operation
?
확인 수정, I는 상기 제 영상에 알파 채널을 추가하는 방법을 발견했다. 아래는 코드입니다. 나는 단 하나의 줄무늬 상수 이미지를 만들고 그것을 첫 번째 이미지와 병합했다.
ParameterBlock pb = new ParameterBlock();
pb.add(new Float(finalImage.getWidth())).add(new Float(finalImage.getHeight()));
pb.add(new Byte[] {new Byte((byte)0xFF)});
RenderedImage alpha = JAI.create("constant", pb);
finalImage = BandMergeDescriptor.create(finalImage, alpha, null);
내가 지금 가지고있는 문제는 오버레이를 추가 할 때마다 이미지의 색상이 변하는 것입니다. 모든 색상이 빨간색 또는 분홍색의 뉘앙스가됩니다. 두 번째 오버레이를 추가하면 이미지가 다시 일반화되지만 첫 번째 오버레이는 색상을 변경합니다. 모든 검은 영역은 흰색이됩니다.
또한 오버레이의 배경이 투명하지 않습니다. 그것은 회색입니다.
아래는 이미지의 예입니다, 그래서 당신이 색을 변경하는 방법을 참조하십시오
당신이 볼 수 있듯이, 그림 및 오버레이 색상을 변경하고 오버레이의 배경이 투명하지 않습니다.
이미지가 항상 올바르게 표시되도록이 문제를 해결할 수 있습니까? 감사!
그건 작동하지 않았다. 이미지의 색상이 계속 변합니다. – adryr
또한 매개 변수 블록을 적용하지 않습니까? 변경되지 않은 첫 번째 이미지를 새로운 깨끗한 버퍼 이미지로 그립니 까? – cello
네, 타입이 TYPE_4BYTE_ARGB' 인 새'BufferedImage'를 만들고 첫 번째 이미지를 그 안에 넣었습니다. 'img.createGraphics(). drawRenderedImage (finalImage, 새로운 AffineTransform());' – adryr