javafx-2 - 尝试将图像扩展到全尺寸时出现不需要的黑色边框

标签 javafx-2 bufferedimage snapshot

在 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

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

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

这是我的代码:
    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);

最佳答案

黑色边框来自您的 BufferedImage 内未初始化的像素缓冲区。目的。
所以,我猜 renderedImage本身不包含场景的正确部分。

拍摄快照时,场景可能尚未正确调整大小。尽量给个合适的WritableImage snapshot method :

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

关于javafx-2 - 尝试将图像扩展到全尺寸时出现不需要的黑色边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18136666/

相关文章:

scala - 在 Scala 列表中使用 'nested' 类型

JavaFX 如何以编程方式更改 GridPane 行高

java - 将多个 BufferedImages 添加到组件以进行拖动

java - 为什么 raster.setPixels() 返回灰度图像

java - 在java中动态调整缓冲图像的大小

android - 如何在 android studio 的 gradle 4.4 中发布 Artifact (将 APK 上传到 nexus)?

java - Java 代码示例的 AWS RDS 快照

windows - 无论如何以编程方式取消最小化javafx中的阶段

java - 如何从多个嵌套 FXML 获取数据并调用其 Controller 上的方法

amazon-web-services - 如何使用 AWS Lambda 捕获无服务器网站屏幕截图?