在 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);
最佳答案
黑色边框来自您的 BufferedImage
内未初始化的像素缓冲区。目的。
所以,我猜 renderedImage
本身不包含场景的正确部分。
拍摄快照时,场景可能尚未正确调整大小。尽量给个合适的WritableImage
到 snapshot
method :
snapshot = quotes.getScene().snapshot(new WritableImage(1500, 900));
关于javafx-2 - 尝试将图像扩展到全尺寸时出现不需要的黑色边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18136666/