下载链接中的Javafx图像

下载链接中的Javafx图像,java,javafx,Java,Javafx,我正在将图像上载到后端并生成下载链接我想下载图像并在javafx中显示它我找到了以下解决方案: ImageView imageView = ImageViewBuilder.create() .image(new Image(imageSource)) .build(); 但我使用的是JavaFX11,在我的JavaFx场景imageView包中似乎没有ImageViewBuilder这样的东西?有什么想法或替代方法吗?构建器类不久前就被

我正在将图像上载到后端并生成下载链接我想下载图像并在javafx中显示它我找到了以下解决方案:

    ImageView imageView = ImageViewBuilder.create()
            .image(new Image(imageSource))
            .build();

但我使用的是JavaFX11,在我的JavaFx场景imageView包中似乎没有ImageViewBuilder这样的东西?有什么想法或替代方法吗?

构建器类不久前就被弃用了。有关更多信息,请参阅和。这就是说,
Image
类仍然可以加载远程图像,但是您应该使用构造函数而不是构建器

从(强调我的):

Image
类表示图形图像,用于从指定的
URL
加载图像

支持的图像格式包括:

  • 骨形态发生蛋白
  • GIF
  • JPEG
  • 巴布亚新几内亚
图像可以在加载时调整大小(例如,减少图像所消耗的内存量)。应用程序可以指定缩放时使用的过滤质量,以及是否保留原始图像的纵横比

可以将支持的所有URL传递给构造函数。如果传递的字符串不是有效的
URL
,而是路径,则在这种情况下会在类路径上搜索
图像

用于显示加载了此类的图像。相同的
图像
实例可以通过多个
ImageView
s显示

因此,您可以使用:

String remoteUrl = ...;
Image image = new Image(remoteUrl);
ImageView view = new ImageView(image);

// or...
ImageView view = new ImageView(remoteUrl);

第二个选项利用
ImageView(String)
构造函数。请注意,它阻止您在后台加载图像(没有自定义代码),而
image
的构造函数为其提供了一个选项。如果您想控制自己的
InputStream
,您也可以使用
Image
的适当构造函数来实现这一点;在这种情况下,不要忘记关闭
InputStream

构建器类不久前就被弃用了。有关更多信息,请参阅和。这就是说,
Image
类仍然可以加载远程图像,但是您应该使用构造函数而不是构建器

从(强调我的):

Image
类表示图形图像,用于从指定的
URL
加载图像

支持的图像格式包括:

  • 骨形态发生蛋白
  • GIF
  • JPEG
  • 巴布亚新几内亚
图像可以在加载时调整大小(例如,减少图像所消耗的内存量)。应用程序可以指定缩放时使用的过滤质量,以及是否保留原始图像的纵横比

可以将支持的所有URL传递给构造函数。如果传递的字符串不是有效的
URL
,而是路径,则在这种情况下会在类路径上搜索
图像

用于显示加载了此类的图像。相同的
图像
实例可以通过多个
ImageView
s显示

因此,您可以使用:

String remoteUrl = ...;
Image image = new Image(remoteUrl);
ImageView view = new ImageView(image);

// or...
ImageView view = new ImageView(remoteUrl);

第二个选项利用
ImageView(String)
构造函数。请注意,它阻止您在后台加载图像(没有自定义代码),而
image
的构造函数为其提供了一个选项。如果您想控制自己的
InputStream
,您也可以使用
Image
的适当构造函数来实现这一点;在这种情况下,不要忘记关闭
InputStream

构建器已经被弃用了一段时间。您应该只使用
ImageView
Image
@Slaw的构造函数。我认为ImageViewBuilder首先下载文件,然后用它创建一个图像。使用BufferedInputStream(新URL('http:/image.png').openStream())也是如此;创建图像之前先下载文件的正确方法是什么?请注意,
ImageViewBuilder
只需使用创建一个
ImageView
。您可以使用构造函数有效地完成同样的事情(参见我的答案)。您应该只使用
ImageView
Image
@Slaw的构造函数。我认为ImageViewBuilder首先下载文件,然后用它创建一个图像。使用BufferedInputStream(新URL('http:/image.png').openStream())也是如此;创建图像之前先下载文件的正确方法是什么?请注意,
ImageViewBuilder
只需使用创建一个
ImageView
。您可以使用构造函数有效地完成同样的事情(参见我的答案)。