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

在此处输入图像描述

如您所见,图像仍然在与以前相同的位置被切断,但旁边没有黑色边框。

如何将当前场景的整个快照放入一个没有这些边界且没有任何内容被截断的文件中?

这是我的代码:

    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 回答