在Java2D中使用ColorConvertOp时,有没有办法为透明度设置默认颜色?

在Java2D中使用ColorConvertOp时,有没有办法为透明度设置默认颜色?,java,colors,java-2d,color-space,Java,Colors,Java 2d,Color Space,我正在将一个有透明度的图像转换成一个没有透明度的颜色空间。我想为透明区域设置背景色。现在,当我转换它时,任何透明的区域在最终图像中都会变成黑色。当我在颜色空间之间转换时,有没有办法做到这一点?以下是我用于在颜色空间之间转换的代码: public BufferedImage convertColorspace( BufferedImage source, int newType) { BufferedImage destination = new BufferedImage( source

我正在将一个有透明度的图像转换成一个没有透明度的颜色空间。我想为透明区域设置背景色。现在,当我转换它时,任何透明的区域在最终图像中都会变成黑色。当我在颜色空间之间转换时,有没有办法做到这一点?以下是我用于在颜色空间之间转换的代码:

public BufferedImage convertColorspace( BufferedImage source, int newType) {
    BufferedImage destination = new BufferedImage( source.getWidth(), source.getHeight(), newType);
    ColorConvertOp colorConvertOp = new ColorConvertOp(null);
    colorConvertOp.filter(source, destination);
    return destination;
}

// here is how its used
BufferedImage converted = convertColorspace(combinedImage, BufferedImage.TYPE_3BYTE_BGR);
我正在从BuffereImage.TYPE_4BYTE_ARGB转换为BuffereImage.TYPE_3BYTE_BGR。

如何:

    BufferedImage temp = new BufferedImage(source.getWidth(), source.getHeight(), 
        BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = temp.createGraphics();
    g2.setColor(Color.green);
    g2.fillRect(0, 0, source.getWidth(), source.getHeight());
    g2.drawImage(0, 0, source, null);
    g2.dispose();
然后用
temp
调用
colorConvertOp.filter
,而不是
source

如何:

    BufferedImage temp = new BufferedImage(source.getWidth(), source.getHeight(), 
        BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = temp.createGraphics();
    g2.setColor(Color.green);
    g2.fillRect(0, 0, source.getWidth(), source.getHeight());
    g2.drawImage(0, 0, source, null);
    g2.dispose();
然后用
temp
而不是
source
调用
colorConvertOp.filter