/** * * ImageSequence2JSMovie * * @version 1.0.1 vom 01.07.2013 * @author Daniel Ruf */ import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import java.io.IOException; import java.io.File; import java.io.FileFilter; import java.io.InputStream; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.BufferedWriter; import java.io.BufferedReader; import java.io.FileReader; public class imagesequence2jsmovie { public static void main(String[] args) throws Exception{ String path2 = "."; File directory = new File(path2); File[] myarray; String version = "1.0.1"; String program = "ImageSequence2JSMovie"; System.out.println(program + " " + version ); myarray=directory.listFiles(new FileFilter() { public boolean accept(File dir) { return dir.toString().endsWith(".jpg") && dir.isFile(); } }); if (myarray.length > 0) { System.out.println("Found " + myarray.length + " frames"); String[] dirs = {"js", "frames", "img"}; String[] js_files = {"jquery-1.10.1.min.js", "jquery.jsmovie.1.4.4.min.js", "jquery.jsmovie.1.4.4.js"}; String[] img_files = {"loader.png"}; String[] html_files = {"index.html"}; for(int i = 0; i < dirs.length; i++) { File dir = new File(dirs[i]); dir.mkdir(); } for(int i = 0; i < js_files.length; i++) { File f=new File("js/"+js_files[i]); InputStream js_file = imagesequence2jsmovie.class.getResourceAsStream("jar_files/"+js_files[i]); OutputStream out=new FileOutputStream(f); byte buf[]=new byte[1024]; int len; while((len=js_file.read(buf))>0) out.write(buf,0,len); out.close(); js_file.close(); } for(int i = 0; i < html_files.length; i++) { File f=new File(html_files[i]); InputStream html_file = imagesequence2jsmovie.class.getResourceAsStream("jar_files/"+html_files[i]); OutputStream out=new FileOutputStream(f); byte buf[]=new byte[1024]; int len; while((len=html_file.read(buf))>0) out.write(buf,0,len); out.close(); html_file.close(); } for(int i = 0; i < img_files.length; i++) { File f=new File("img/"+img_files[i]); InputStream inputStream = imagesequence2jsmovie.class.getResourceAsStream("jar_files/"+img_files[i]); OutputStream out=new FileOutputStream(f); byte buf[]=new byte[1024]; int len; while((len=inputStream.read(buf))>0) out.write(buf,0,len); out.close(); inputStream.close(); } File path_first=myarray[0]; File path_last=myarray[myarray.length-1]; int index_first = path_first.getName().lastIndexOf('.'); String filename_first = path_first.getName().substring(0, index_first); int index_last = path_last.getName().lastIndexOf('.'); String filename_last = path_last.getName().substring(0, index_last); String frame_name = filename_first.replaceAll("[0-9]", "#"); int frame_first= Integer.parseInt(filename_first.replaceAll("\\D+", "")); int frame_last = Integer.parseInt(filename_last.replaceAll("\\D+", "")); BufferedImage bimg = ImageIO.read(myarray[0]); int frame_width = bimg.getWidth(); int frame_height = bimg.getHeight(); InputStream generated_file = imagesequence2jsmovie.class.getResourceAsStream("jar_files/generated.js"); String generated_string = convertStreamToString(generated_file); generated_string = generated_string.replace("#FRAME_NAME#", frame_name); generated_string = generated_string.replace("#FRAME_FIRST#", String.valueOf(frame_first)); generated_string = generated_string.replace("#FRAME_LAST#", String.valueOf(frame_last)); generated_string = generated_string.replace("#FRAME_WIDTH#", String.valueOf(frame_width)); generated_string = generated_string.replace("#FRAME_HEIGHT#", String.valueOf(frame_height)); FileWriter fileWriter = new FileWriter ("js/generated.js"); BufferedWriter bufferedWriter = new BufferedWriter (fileWriter); bufferedWriter.write (generated_string); bufferedWriter.close (); for (int j = 0; j < myarray.length; j++) { int file_number = j+1; System.out.print("\rProcessing frame " + file_number + " of " + myarray.length); File path=myarray[j]; String path_current = path.toString(); path.renameTo(new File("frames/"+path.getName())); } System.out.println(""); System.out.println("Done"); } else { System.out.println("Found " + myarray.length + " frames"); } } public static String readLines(String aFile) throws IOException { StringBuilder contents = new StringBuilder(); try { BufferedReader input = new BufferedReader(new FileReader(aFile)); try { String line = null; while (( line = input.readLine()) != null){contents.append(line); contents.append("\n");} } finally {input.close();} } catch (IOException ex){ ex.printStackTrace(); } return contents.toString(); } public static String convertStreamToString(java.io.InputStream is) { java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A"); return s.hasNext() ? s.next() : ""; } }