【问题标题】:JavaFx - Creating animation from Image arrayJavaFx - 从图像数组创建动画
【发布时间】:2017-05-06 00:25:03
【问题描述】:

我在 JavaFx 中有一个 Image 数组。我想从这些图像中创建一个剪辑视频(动画),包括声音文件。 我怎样才能做到这一点?

注意:我想在进程结束时获取视频文件(avi、mp4 ...)。

这是我的数组:

Image[] frames

我尝试使用“keyFrame”类...但没有成功:

        ImageView destImageView = new ImageView();
        Group group;
        group = new Group();
        group.setTranslateX(300);
        group.setTranslateY(450);

        Image[] frames = m.getFrames();
        KeyFrame[] kf = new KeyFrame[frames.length];
        for(int i=0;i<frames.length;i++){
            kf[0] =new KeyFrame(new Duration(0), new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
//                  destImageView.setImage();
//                  group.getChildren().setAll(destImageView);

                }
            });
        }

【问题讨论】:

  • 这个问题是too broad,除非针对特定场景进行询问并提供经过验证的代码,否则很可能会被关闭。
  • 您可以创建sprite animationcat whack animation,但实际上这与制作 avi 或 mp4 完全不同,所以我怀疑这样做不会帮助您实现最终目标 - 有JavaFX 核心库中没有内置的 avi/mp4 导出功能。
  • Ramz 的声音怎么样? (我在问你)你的问题是什么?
  • @jewelsea 我想为动画添加声音。
  • 您可以使用MediaPlayerAudioClip 使用JavaFX 播放音频。阅读JavaFX media documentation

标签: image animation image-processing video javafx


【解决方案1】:

你可以使用

javax.imageio.ImageIO.write(javafx.embed.swing.SwingFXUtils.fromFXImage(frame, null), "png", new File(directory, fileName));

将每个图像保存为 png 文件。

确保为帧提供按顺序编号的文件名,例如img0000.png、img0001.png 等..

然后使用 ImageJ/斐济 (https://imagej.net/Fiji/Downloads) 导入图像序列并保存为 avi 文件。或者,由于 ImageJ 是开源的并用 Java 编写,您可以直接导入和使用 ImageJ 类

ij.plugin.filter.AVI_Writer

然后,您可以使用 VLC 播放器将其转换为 mp4 或其他格式。

【讨论】:

    猜你喜欢
    • 2016-05-02
    • 2017-07-08
    • 2020-07-25
    • 2011-04-10
    • 1970-01-01
    • 2013-09-20
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多