¿Hay alguna forma de establecer un color predeterminado para la transparencia cuando se usa ColorConvertOp en Java2D?

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

Pregunta

Estoy convirtiendo una imagen con transparencia en un Espacio de color que no tiene transparencia.Me gustaría establecer un color de fondo para las áreas transparentes.En este momento, cuando lo convierto, cualquier área transparente se vuelve negra en la imagen final.¿Hay alguna manera de hacerlo mientras convierto entre espacios de color?Aquí está mi código que utilizo para convertir entre espacios de color:

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

Estoy convirtiendo de BufferedImage.TYPE_4BYTE_ARGB a BufferedImage.TYPE_3BYTE_BGR.

¿Fue útil?

Solución

¿Qué 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();

Luego, llame a colorConvertOp.filter con temp en lugar de source.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top