Gibt es eine Möglichkeit, eine Standardfarbe für Transparenz festzulegen, wenn ColorConvertOp in Java2D verwendet wird?

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

Frage

Ich konvertiere ein Bild mit Transparenz in einen Farbraum ohne Transparenz.Ich möchte eine Hintergrundfarbe für die transparenten Bereiche festlegen.Wenn ich es gerade konvertiere, wird jeder transparente Bereich im endgültigen Bild schwarz.Gibt es eine Möglichkeit, dies zu tun, während ich zwischen ColorSpaces konvertiere?Hier ist mein Code, den ich zum Konvertieren zwischen Farbräumen verwende:

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

Ich konvertiere von BufferedImage.TYPE_4BYTE_ARGB nach BufferedImage.TYPE_3BYTE_BGR.

War es hilfreich?

Lösung

Wie wäre es mit:

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

Rufen Sie dann colorConvertOp.filter mit temp anstelle von source auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top