2014-01-14 89 views
0

我畫一個BufferedImage我該如何製作一個BufferedImage「faintter」?

BufferedImage map = ImageIO.read(getClass().getResource("map.png")); 

,但我想無論是)把白過濾器頂部,或b)改變阿爾法值,以便它不亮。我試過

for (int x = 0; x < map.getWidth(); x++) { 
     for (int y = 0; y < map.getHeight(); y++) 
     { 
      int tempcolor = map.getRGB(x, y); 
      int newalpha = (60 << 24) | (tempcolor & 0x00ffffff); 
      map.setRGB(x, y, newalpha); 
     } 
     } 
g.drawImage(map, 0, 0, this); 

但圖像看起來完全像原始圖像。有任何想法嗎?

+1

阿爾法只會讓下層通過展示。如果沒有低層,則沒有任何反應。 –

+0

這很有道理。所以我可以在它後面添加一個白色圖層,並且可以解決問題。 – Martin

+0

雖然可能比使用'RescaleOp'要慢,因爲你有一個支持alpha的圖像類型('BufferedImage.TYPE_xxx'),就像'BufferedImage.TYPE_INT_ARGB'一樣,你的原始代碼應該可以工作。 – haraldK

回答

4

可以使用RescaleOp中,因爲它處理的α,

RescaleOp rescale = new RescaleOp(1.2f, 15, null); 
    rescaleOp.filter(image, image); // Source and destination are the same. 

請參閱本link也可以幫助你更

一個亮度控制更link here

相關問題