2017-05-10 4 views
1

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.

+0

Erstellen Sie eine 'Farbe' mit Alphakanal, mit Hilfe des Konstruktors' Farbe (int r, int g, int b, int a) 'zum Beispiel. –

+0

@ Jean-BaptisteYunès Ich hätte sagen sollen, dass ich das versucht habe - wurde schwarz. –

+0

Was erwarten Sie? Was machst du mit dem Bild danach? –

Antwort

0

Das war ein dummer Fehler meinerseits. Ich überlasse das für andere, die das gleiche Problem haben.

graphics.setBackground(new Color(0x00FFFFFF, true)); 
graphics.clearRect(0, 0, sectPage.getPaperWidth().getValue(), sectPage.getPaperHeight().getValue()); 

funktioniert. Mein Problem war das Programm, das ich mit gebrauchtem Schwarz für den klaren Hintergrund anschaute. Früher verwendete es das weiße/graue Schachbrettmuster. Also für jeden, der das nicht funktioniert ...

Sehen Sie Ihre Bitmap mit mehreren Programmen!

+0

nur eine Option: 'neue Farbe (255, 255, 255, 0)' ... –

Verwandte Themen