我有一组图像,我想一个接一个地添加并创建一个电影.我将使用Quicktime for java(我在Mac上).
我在网上搜索了我发现了很多例子,展示了如何使用qtj播放电影,但我找不到任何代码片段或教程,展示我如何使用qtj逐帧创建电影?
我通过QTJ用处理库(GPL)中的MovieMaker类完成了这个.处理是纯java,虽然它可以为初学者隐藏它.
小教程: 下载处理,打开它,转到草图 - >显示草图文件夹,创建一个名为"数据"的文件夹,并将所有图像放在该文件夹中,通过"filename09.gif"命名为"filename01.gif".将以下代码粘贴到编辑器中,然后点击播放:
/** * Makes a QuickTime movie out of an array of images. */ import processing.video.*; MovieMaker mm; PImage[] imageFrames; int index; void setup() { size(320, 240); int numFrames = 9; imageFrames = new PImage[numFrames]; for( int i = 0; i < imageFrames.length; i++ ) { imageFrames[i] = loadImage( "filename" + nf(i+1,2) + ".gif" ); } // Save uncompressed, at 15 frames per second mm = new MovieMaker(this, width, height, "drawing.mov"); // Or, set specific compression and frame rate options //mm = new MovieMaker(this, width, height, "drawing.mov", 30, // MovieMaker.ANIMATION, MovieMaker.HIGH); } void draw() { if( index < imageFrames.length ) { // show the image image( imageFrames[index], 0, 0 ); // Add window's pixels to movie mm.addFrame(); index++; } else { mm.finish(); // Quit running the sketch once the file is written exit(); } }
这将从sketch文件夹中的图像创建一个文件"drawing.mov".如果你去文件 - >导出应用程序,然后打开草图文件夹并导航到文件夹application.macosx/source或application.windows/source,应该有一个.java文件,其中包含实际代码,应该看起来像这样:
import processing.core.*; import processing.xml.*; import processing.video.*; import java.applet.*; import java.awt.*; import java.awt.image.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.*; import java.util.*; import java.util.zip.*; import java.util.regex.*; public class movie2 extends PApplet { /** * Makes a QuickTime movie out of an array of images. */ MovieMaker mm; PImage[] imageFrames; int index; public void setup() { size(320, 240); int numFrames = 9; imageFrames = new PImage[numFrames]; for( int i = 0; i < imageFrames.length; i++ ) { imageFrames[i] = loadImage( "filename" + nf(i+1,2) + ".gif" ); } // Save uncompressed, at 15 frames per second mm = new MovieMaker(this, width, height, "drawing.mov"); // Or, set specific compression and frame rate options //mm = new MovieMaker(this, width, height, "drawing.mov", 30, // MovieMaker.ANIMATION, MovieMaker.HIGH); } public void draw() { if( index < imageFrames.length ) { // show the image image( imageFrames[index], 0, 0 ); // Add window's pixels to movie mm.addFrame(); index++; } else { mm.finish(); // Quit running the sketch once the file is written //exit(); println( "done" ); } } static public void main(String args[]) { PApplet.main(new String[] { "--bgcolor=#e0dfe3", "movie2" }); } }
要使用纯java,您需要使用类路径上的处理应用程序文件夹中的core.jar和video.jar,然后编译此java代码.这是一个函数引用和处理库的javadoc. 以下是MovieMaker类的javadoc.如果需要,您可以看到MovieMaker类的源代码.
HTH