C'è un modo per impostare un colore predefinito per la trasparenza quando si utilizza ColorConvertOp in Java2D?

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

Domanda

Sto convertendo un'immagine contenente una trasparenza in uno spazio colore che non ha trasparenza.Vorrei impostare un colore di sfondo per le aree trasparenti.In questo momento, quando lo converto, qualsiasi area trasparente diventa nera nell'immagine finale.C'è un modo per farlo mentre sto convertendo tra ColorSpaces?Ecco il mio codice che uso per convertire tra gli spazi colore:

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

Sto convertendo da BufferedImage.TYPE_4BYTE_ARGB a BufferedImage.TYPE_3BYTE_BGR.

È stato utile?

Soluzione

Che ne dici di:

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

Quindi chiama colorConvertOp.filter con temp invece di source.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top