小编for*_*ext的帖子

如何在JavaFX中大频率地显示图像?

我的应用程序生成热图图像的速度与 CPU 的速度一样快(大约每秒 30-60 个),并且我希望将它们显示在单个“实时热图”中。在 AWT/Swing 中,我可以将它们绘制到 JPanel 中,这就像一个魅力。最近,我切换到JavaFX并想在这里实现同样的目标;起初,我尝试使用Canvas,虽然速度很慢,但还不错,但存在严重的内存泄漏问题,导致应用程序崩溃。现在,我尝试了ImageView组件 - 这显然太慢了,因为图像变得相当滞后(在每次新迭代中使用ImageView.setImage)。据我了解,setImage 并不能保证函数完成时实际显示图像。

我的印象是我走错了路,以不恰当的方式使用这些组件。如何每秒显示 30-60 张图像?

编辑:一个非常简单的测试应用程序。您将需要JHeatChart库。请注意,在台式机上,我得到了大约 70-80 FPS 的速度,并且可视化效果还不错且流畅,但在较小的树莓派(我的目标机器)上,我得到了大约 30 FPS 的速度,但可视化效果极其卡住。

package sample;

import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import org.tc33.jheatchart.HeatChart;

import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.util.LinkedList;

public class Main extends Application {
ImageView imageView = new ImageView();
final int scale = 15;

@Override
public void start(Stage primaryStage) {
    Thread generator …
Run Code Online (Sandbox Code Playgroud)

java javafx image raspberry-pi

4
推荐指数
1
解决办法
1203
查看次数

标签 统计

image ×1

java ×1

javafx ×1

raspberry-pi ×1