Есть ли способ установить цвет по умолчанию для прозрачности при использовании ColorConvertOp в Java2D? - PullRequest
1 голос
/ 06 декабря 2011

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

1 Ответ

1 голос
/ 19 января 2012

Как насчет:

    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.

...