我正在将具有透明度的图像转换为不具有透明度的Colorspace。我想为透明区域设置背景颜色。现在当我转换它时,任何透明的区域在最终图像中变成黑色。当我在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。
答案 0 :(得分: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();
然后使用colorConvertOp.filter
而不是temp
致电source
。