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

ここに画像の説明を入力

ご覧のとおり、画像の一部がまだ切り取られており、実際のフル サイズの画像ではなく、画像の横に大きな黒い境界線が表示されています。

次の写真は

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

ここに画像の説明を入力

ご覧のとおり、画像は以前と同じ場所で途切れていますが、横に黒い境界線はありません。

現在のシーンのスナップショット全体を、これらの境界線やコンテンツが途切れることなく 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);
4

1 に答える 1

0

黒い境界線は、オブジェクト内の初期化されていないピクセル バッファーから取得されますBufferedImage。だから、renderedImageそれ自体にはあなたのシーンの正しい部分が含まれていないと思います。

スナップショットを撮っているとき、シーンはまだ適切にサイズ変更されていない可能性があります。メソッドWritableImageに適切なものを与えるようにしてください:snapshot

snapshot = quotes.getScene().snapshot(new WritableImage(1500, 900));
于 2014-05-10T16:07:57.663 に答える