2012-03-08 63 views
3

我似乎在哪裏創建具有透明像素這樣一個BufferedImage將有一個問題:Java的緩衝圖像RescaleOp中透明度問題

BufferedImage buff = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB); 

,直到我通過RescaleOp中過濾它變暗它,它工作正常。當我這樣做時,圖像消失。這裏是我完整的代碼只是讓你可以看到我是如何設置此功能:

BufferedImage buff = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB); 
    Graphics2D g = buff.createGraphics(); 
    g.drawImage(i, 0, 0, null); 
    g.dispose(); 
    RescaleOp filter = new RescaleOp(lightlevel, 0f, null); 
    buff = filter.filter(buff, null); 

我的問題是,我該如何解決這一問題,以便緩衝圖像將有其像素變暗而不影響透明度?

回答

2

你可以試試處理阿爾法RescaleOp所示here,並使用相同的lightLevel所有顏色分量。

+0

除了沒有補償之外,我還有沒有相同的確切的東西? – MrDrProfessorTyler 2012-03-08 15:40:34

+0

等待不知道我看它是如何工作的。謝謝! – MrDrProfessorTyler 2012-03-08 16:03:16

+0

不客氣,當您滿意時,您可以通過點擊[空格勾號]接受此答案(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 )在左邊。 – trashgod 2012-03-08 19:38:05