我有一个从主监视器截取的图像,我想将它添加到Java FX中,ImageView如下所示:
@FXML
protected ImageView screenshot() throws AWTException, IOException {
Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage capture = new Robot().createScreenCapture(screenRect);
ImageView imageView = new ImageView();
Image image = capture; //Error
imageView.setImage(image);
return imageView;
}
Run Code Online (Sandbox Code Playgroud)
我试图设置BufferedImage capture为javafx.scene.image.Image image但但类型不兼容,我也无法投射它.我怎么能纠正这个?
Rei*_*eus 46
您可以使用
Image image = SwingFXUtils.toFXImage(capture, null);
Run Code Online (Sandbox Code Playgroud)
小智 9
通常最好的选择是Image image = SwingFXUtils.toFXImage(capture, null);java9 或更大的版本......但是就 javafx 的性能而言,以及在性能较低的设备中,您可以使用这种技术来发挥魔力,在 java8 中进行了测试
private static Image convertToFxImage(BufferedImage image) {
WritableImage wr = null;
if (image != null) {
wr = new WritableImage(image.getWidth(), image.getHeight());
PixelWriter pw = wr.getPixelWriter();
for (int x = 0; x < image.getWidth(); x++) {
for (int y = 0; y < image.getHeight(); y++) {
pw.setArgb(x, y, image.getRGB(x, y));
}
}
}
return new ImageView(wr).getImage();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24038 次 |
| 最近记录: |