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)
它很简单:用浏览器打开图像并复制图片的整个网址并将其粘贴为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)