我有兩個RenderedImages
。我想用這兩幅圖像做一個Overlay Operation
,因此它們需要匹配數據類型和波段數。
我的問題是一個圖像有3個波段(RGB),第二個圖像有4個波段(ARGB)。JAI將Alpha通道添加到RenderedImage
我的問題是如何添加一個Alpha通道到第一個圖像,所以我可以做Overlay Operation
?
EDIT
好的,我發現添加Alpha通道到所述第一圖像的方法。以下是代碼。我只是創建了一個單獨的帶狀常量圖像,並將其與我的第一張圖像合併。
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,new AffineTransform());' – adryr