2013-08-08 7 views
5

JavaFxで自分のシーンのスクリーンショットを撮るときに、BufferedImageをPNG/JPGとしてファイルに保存します。画像の大きさを最大限にしようとすると、画像の左から黒の境界線が画像のサイズを大きくしなくなります。 画像のサイズは、以下に示すように1300x700に設定するまで増加します。イメージをフルサイズに展開しようとすると、黒い枠が表示されない

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

ただし、1300x700を超えるサイズを増やすと、黒い境界線が表示されます。

は、以下の画像はご覧のように、画像の一部がまだ遮断され、大きな黒い境界線がではなく、画像の隣に今そこにある

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

enter image description here

に設定されています実際のフルサイズの画像。

あなたが見ることができるように、以下の画像は

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

enter image description here

に設定され、画像は以前と同じように同じ場所で切断されているが、側面に沿って黒いボーダーはそれではありません。

現在のシーンのスナップショット全体を1つのファイルに収めるにはどうすればいいですか?

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

、スナップショット方式のパラメータとして、このような何かWritableImageを設定してみてください。 'quotes.getScene()スナップショット(スナップショット);' – Eeliya

答えて

0

黒枠があなたのBufferedImageオブジェクトの内部、初期化されていないピクセルバッファから来ている:

は、ここに私のコードです。 renderedImageには、シーンの右側部分が含まれていないと思います。

スナップショットを撮るときにシーンのサイズがまだ適切に調整されていない可能性があります。 snapshot methodに適切なWritableImageを与えるようにしてください:

snapshot = quotes.getScene().snapshot(new WritableImage(1500, 900)); 
関連する問題