Dies wurde here und here gefragt - aber alle Antworten in beiden funktionieren nicht (ich habe über eine Stunde damit verbracht, sie alle auszuprobieren).Ein BufferedImage mit transparenten Pixeln füllen
Teil des Problems Ich denke, der Hintergrund muss auf weiß mit einem Alpha von 0 festgelegt werden. Auf diese Weise ist die Farbe für Programme oder Formate, die Alpha nicht unterstützen, weiß statt schwarz.
Also meine Frage ist, wie setze ich eine erstellte BufferedImage auf einen Hintergrund von allen transparenten weiß?
My-Code (setzt es auf nicht-transparent weiß):
image = new BufferedImage((sectPage.getPaperWidth().getValue() * dpi)/1440,
(sectPage.getPaperHeight().getValue() * dpi)/1440,
BufferedImage.TYPE_INT_ARGB);
// bugbug - https://stackoverflow.com/questions/321736/how-to-set-dpi-information-in-an-image
graphics = image.createGraphics();
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
// bugbug - want all clear
graphics.setColor(new Color(255, 255, 255));
graphics.fillRect(0,0,(sectPage.getPaperWidth().getValue() * dpi)/1440, (sectPage.getPaperHeight().getValue() * dpi)/1440);
auch versucht, in einer Farbe mit alpha auf 0 gesetzt und setBackground Passing(). Habe in beiden Fällen einen Hintergrund.
Erstellen Sie eine 'Farbe' mit Alphakanal, mit Hilfe des Konstruktors' Farbe (int r, int g, int b, int a) 'zum Beispiel. –
@ Jean-BaptisteYunès Ich hätte sagen sollen, dass ich das versucht habe - wurde schwarz. –
Was erwarten Sie? Was machst du mit dem Bild danach? –