Existe uma maneira de definir uma cor padrão para transparência ao usar ColorConvertOp em Java2D?

StackOverflow https://stackoverflow.com/questions/8392902

Pergunta

Estou convertendo uma imagem com transparência em um espaço de cores sem transparência.Eu gostaria de definir uma cor de fundo para as áreas transparentes.Agora mesmo, quando eu o converter, qualquer área transparente torna-se preta na imagem final.Existe uma maneira de fazer isso enquanto estou convertendo entre ColorSpaces?Este é o meu código que uso para converter entre espaços de cores:

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

Estou convertendo de BufferedImage.TYPE_4BYTE_ARGB para BufferedImage.TYPE_3BYTE_BGR.

Foi útil?

Solução

Que tal:

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

Em seguida, chame colorConvertOp.filter com temp em vez de source.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top