有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

透明背景png Java BuffereImage

我正在尝试从Java显示的图像中创建一个png,背景是透明的,而不是白色的。尝试在新颜色(0,0,0,0)中将alpha设置为0-背景仍然显示为白色

我正在使用BuffereImage

            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) 个答案

  1. # 1 楼答案

    您没有在颜色模型中指定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());