2015-04-15 108 views
0

我在JavaFx中有图像数组。我想从这些图像中创建一个剪辑视频(动画),包括声音文件。 我该如何实现这一目标?JavaFx - 从图像数组创建动画

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

这是我的数组:

Image[] frames 

我尝试使用 “关键帧” 类......但没有成功:

 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); 

       } 
      }); 
     } 
+0

这个问题“太广泛了”,除非用特定的方案询问并提供了可靠的代码,否则很可能会被关闭。 – ItachiUchiha

+1

您可以创建一个[精灵动画](http://blog.netopyr.com/2012/03/09/creating-a-sprite-animation-with-javafx/)或[猫重击动画](http:/ /stackoverflow.com/questions/23440980/how-show-specific-part-of-an-image-in-javafx),但这真的不像制作一个AVI或MP4,所以我怀疑这样做不会帮助你实现您的最终目标 - JavaFX核心库中没有内置的avi/mp4导出功能。 – jewelsea

+0

拉姆兹的声音怎么样? (我在问你)你的问题是什么? – jewelsea

回答

0

您可以使用

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或其他格式例。