前回は航海画像アップロードしました。
今回は300枚ある画像を再生したいと思います。

画像はtrck000000~trck000299までの通し番号がついているので、これを利用してfor文をまわせば簡単に再生できます。また、これらの画像の1枚当たりの間隔は0.1secなので、1枚表示したらtwait()メソッドにより0.1秒待つことにします。僕の場合ではshipdataのファイルをC:\Picture\のところにおいてあります。それぞれファイルを置く場所は違いますので、指定してください。(相対パスでもいけるのですが。)

ImagePlay.java

import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; public class ImagePlay { public static void main(String[] args) throws IOException{ ImageFrame frame = new ImageFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); for(int i = 0; i < 300; i++){ String num = String.format("%06d",i);      //画像ファイルの読み込み BufferedImage cur_img = ImageIO.read(new File("C:/Picture/shipdata/trck" + num + ".JPG")); twait(); frame.disp(cur_img); //新しい画像をセットする frame.repaint(); } } public static void twait(){ try{ Thread.sleep(100); //0.1sec待つ }catch(InterruptedException e){} } } //画像を表示するためのクラス class ImageFrame extends JFrame{ final int WIDTH = 960; final int HEIGHT = 540; BufferedImage cur_img = null; public ImageFrame(){ setSize(WIDTH, HEIGHT); setLocationRelativeTo(null); } public void disp(BufferedImage img){ cur_img = img; } public void paint(Graphics g){ g.drawImage(cur_img, 0, 0, this); } }