2013-08-08 14 views
5

Quando si acquisisce uno screenshot della mia scena in JavaFx, salgo BufferedImage in un file come PNG/JPG. Quando provo a massimizzare la dimensione dell'immagine per tutta la sua lunghezza, ottengo bordi neri sull'immagine dalla sinistra dell'immagine verso il basso senza che l'immagine aumenti le sue dimensioni. La dimensione dell'immagine aumenta solo fino a quando ho impostato le mie dimensioni su 1300x700 come mostrato di seguito.Bordi neri indesiderati quando si tenta di espandere l'immagine a dimensione intera

BufferedImage image = new BufferedImage(1300, 700, BufferedImage.TYPE_INT_RGB); 

Tuttavia, una volta aumentate le dimensioni superiori a 1300x700, vengono visualizzati i bordi neri.

L'immagine seguente è impostato su

BufferedImage image = new BufferedImage(1500, 900, BufferedImage.TYPE_INT_RGB); 

enter image description here

Come si può vedere, una parte dell'immagine è ancora tagliato fuori e non v'è ora un grande bordo nero accanto all'immagine piuttosto che il immagine reale a dimensioni reali.

L'immagine seguente è impostato su

BufferedImage image = new BufferedImage(1300, 700, BufferedImage.TYPE_INT_RGB); 

enter image description here

Come si può vedere, l'immagine è ancora tagliata nello stesso posto di prima, ma non v'è alcun bordo nero lungo il lato con esso.

Come posso adattare l'intera istantanea della mia scena corrente in un file senza questi bordi e senza che nessuno dei contenuti venga troncato?

Ecco il mio codice:

File fa = new File("test.jpg"); 
    snapshot = quotes.getScene().snapshot(null); 

    RenderedImage renderedImage = SwingFXUtils.fromFXImage(snapshot, null); 
    BufferedImage image = new BufferedImage(1300, 700, BufferedImage.TYPE_INT_RGB); 
    image.setData(renderedImage.getData()); 
    ImageIO.write(image, "jpg", fa); 
+0

tenta di impostare WritableImage come parametro per il metodo di snapshot, qualcosa di simile a questo:. 'Quotes.getScene() snapshot (istantanea);' – Eeliya

risposta

0

il bordo nero viene da buffer di pixel non inizializzato, all'interno del vostro BufferedImage oggetto. Quindi, immagino che lo stesso renderedImage non contenga la parte giusta della scena.

La scena potrebbe non essere ancora ridimensionata correttamente quando si scatta l'istantanea. Provate a dare un adeguato WritableImage al snapshot method:

snapshot = quotes.getScene().snapshot(new WritableImage(1500, 900)); 
Problemi correlati