如何在JAVAFX中加载计算机目录图像

use*_*413 7 javafx image imageview

我正在尝试将计算机文件夹图像加载到缩略图墙中.我另一个论坛的一个帖子中读到ImageView"url"实例变量不支持系统路径.我尝试了那里的解决方案,但它引发了一个异常:java.lang.OutOfMemoryError: Java heap space as it keeps reading the file.

另一个问题是它一直给我警告使用包javafx.ext - > SwingUtils.toFXImage方法.

我也尝试输入这样的URL:

"file://localhost//Users/USER/Pictures/Camera/test/1.JPG"
Run Code Online (Sandbox Code Playgroud)

我试图显示多个图像,但它总是只显示3到4个图像.

我检查了给出的错误函数ImageView,它并不表示我的图像读数遇到错误.

还有其他选择吗?

function load() {
    println("RUNTIME {Runtime.getRuntime().maxMemory()}");
    System.gc();
    Runtime.getRuntime().freeMemory();

    //MAC Folder PATH
    var path: String = "/Users/username/Pictures/camera/test/1.JPG";;
    var file: File = new File(path);

    //http://download.oracle.com/docs/cd/E17802_01/javafx/javafx/1.3/docs/api/javafx.ext.swing/javafx.ext.swing.SwingUtils.html

    //public toFXImage(image: java.awt.image.BufferedImage) : Image
    //Creates a JavaFX Image from a BufferedImage.
    img = SwingUtils.toFXImage(ImageIO.read(file));
}
Run Code Online (Sandbox Code Playgroud)

小智 28

目前尚不清楚你想要做什么.如果您正在谈论JavaFX 2.0,以下代码可以正常工作.如果要加载大量图像并需要节省内存,则只需为要一次显示的数字创建足够的ImageView.然后,当您翻阅图像时,可以换出ImageView中包含的Image对象.

public void start(Stage primaryStage) {
    primaryStage.setTitle("Hello World");
    StackPane root = new StackPane();
    Scene scene = new Scene(root, 300, 250);

    File file = new File("/System/Library/CoreServices/loginwindow.app/Contents/Resources/LogOut.png");
    Image image = new Image(file.toURI().toString());
    ImageView iv = new ImageView(image);

    root.getChildren().add(iv);
    primaryStage.setScene(scene);
    primaryStage.show();
}
Run Code Online (Sandbox Code Playgroud)


Fla*_*ash 5

它很简单:用浏览器打开图像并复制图片的整个网址并将其粘贴为Image对象的参数.请勿删除"file ///:",因为这会使图像可加载.你会从那里得到你的其他逻辑.快乐的编码例如

Image image = new Image("file:///C:/Users/Nigel/Desktop/my_image.png");
ImageView imgview = new ImageView(image);
Run Code Online (Sandbox Code Playgroud)