2013-03-27 2 views
0

Я пытаюсь создать png, созданный с изображения на дисплее Java, с прозрачным вместо белого фона. Пробовал настройку alpha до 0 в новом цвете (0,0,0,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

Показать еще код. –

+0

Накладываете ли вы два или более изображений? Если фон белый, он будет казаться белым даже после прозрачности. – akshay202

+1

Вы используете 'BufferedImage'? –

ответ

0

Вы не указываете альфа-компонент в модели цвета. Попробуйте таким образом:

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

+0

Я отредактировал ответ. Если это не работает, покажите нам также код, который вы используете для создания объекта onscreenImage. – xonya

Смежные вопросы