2013-03-27 147 views
0

我想從一個透明的而不是白色背景的Java顯示圖像創建一個PNG。嘗試將新顏色(0,0,0,0)中的alpha設置爲0 - 背景顯示爲白色仍然是?透明背景PNG - Java的 - BufferedImage

我使用的BufferedImage

 
      WritableRaster raster = onscreenImage.getRaster(); 
      WritableRaster newRaster; 
      newRaster = raster.createWritableChild(0, 0, width, height, 0, 0, new int[] {0, 1, 2}); 
      DirectColorModel cm = (DirectColorModel) onscreenImage.getColorModel(); 
      DirectColorModel newCM = new DirectColorModel(cm.getPixelSize(), 
                  cm.getRedMask(), 
                  cm.getGreenMask(), 
                  cm.getBlueMask()); 
      BufferedImage rgbBuffer = new BufferedImage(newCM, newRaster, false, null); 
      try { ImageIO.write(rgbBuffer, suffix, file); } 
      catch (IOException e) { e.printStackTrace(); } 
+1

顯示更多的代碼。 – 2013-03-27 18:19:49

+0

您是否覆蓋兩個或更多圖像?如果背景是白色的,即使在透明之後,它也會顯示爲白色。 – akshay202 2013-03-27 18:21:36

+1

你使用'BufferedImage'嗎? – 2013-03-27 18:21:44

回答

0

你是不是在指定的顏色模式的alpha分量。試試這種方式:

newRaster = raster.createWritableChild(0, 0, width, height, 0, 0, null); 
DirectColorModel cm = (DirectColorModel) onscreenImage.getColorModel(); 
DirectColorModel newCM = new DirectColorModel(cm.getPixelSize(), 
                 cm.getRedMask(), 
                 cm.getGreenMask(), 
                 cm.getBlueMask(), 
                 cm.getAlphaMask()); 
+0

是JPanel像BufferedImage? – ina 2013-03-31 08:30:31

+0

我編輯了答案。如果這不起作用,請向我們展示您用於創建onscreenImage對象的代碼。 – xonya 2013-04-01 16:28:56