【问题标题】:Is there a way to set a default color for transparency when using ColorConvertOp in Java2D?在 Java2D 中使用 ColorConvertOp 时,有没有办法为透明度设置默认颜色?
【发布时间】:2012-01-13 15:23:28
【问题描述】:

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

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);

我正在从 BufferedImage.TYPE_4BYTE_ARGB 转换为 BufferedImage.TYPE_3BYTE_BGR。

【问题讨论】:

    标签: java colors java-2d color-space


    【解决方案1】:

    怎么样:

        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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多