- 締切済み
画像ファイル操作方法
JAVAのプログラムでアプレットを作成しています。 まだ、素人で何も分からない状態ですが質問があります。 拡張子がjpgのファイルを十枚持っています。その画像は1枚目から順番にめっくていくとアニメーションのような動画となります。順番にめくっていくインターバル時間は自由に設定したいと考えています。 質問1:このような場合オブジェクト指向的な考え方は? 質問2:jpgファイルの扱い方は? 無知な私にどうぞ教えてください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ssr-y6
- ベストアンサー率71% (5/7)
画像をタイマで差し替えながらアニメーションにするアプレットのJavaプログラムとページHTMLは、 以下のようになります。 -----ページHTML----- <html> <head><title>AnimeApplet</title></head> <body> <applet code="animeapp" codebase="." width="300" height="300"> <param name="FileName" value="0.gif 1.gif 2.gif 3.gif 4.gif 5.gif 6.gif 7.gif 8.gif 9.gif"> <param name="Interval" value="500"> </applet> </body> </html> -----Javaプログラム(animeapp.java)----- import java.awt.*; import java.applet.*; import java.net.*; public class animeapp extends Applet implements Runnable { private Thread TimerThread; private Image AnimeCell[]; private int Interval, CellNumber, CellCount; private boolean ImageOK = false; public void init() { int Int1; String Str1[] = getParameter("FileName").split(" "); Interval = Integer.parseInt(getParameter("Interval")); TimerThread = new Thread(this); CellNumber = Str1.length; CellCount = 0; AnimeCell = new Image[CellNumber]; for (Int1 = 0; Int1 < CellNumber; Int1 ++) AnimeCell[Int1] = getImage(getDocumentBase(), Str1[Int1]); ImageOK = true; }; public void start() { repaint(); TimerThread.start(); }; public void paint(Graphics g) { if (ImageOK) g.drawImage(AnimeCell[CellCount], 0, 0, this); }; public void update(Graphics g) { paint(g); }; public void run() { while(CellCount >= 0) { try { Thread.sleep(Interval); } catch(Exception ex) {}; if ((CellCount + 1) >= CellNumber) CellCount = 0; else CellCount ++; repaint(); }; }; }
- syunpon
- ベストアンサー率42% (9/21)
アップレットでアニメーションするんなら 下記URLなんか参考になるかと思いますよ
- hyde-la
- ベストアンサー率28% (42/146)
OOPLな分析を施すと、処理の方法によって二分するかも知れません。 (本当はもっとあるでしょうけど) ・JPEGクラス 属性:JPEGデータ ・リストコレクション 属性:アイテム 操作:追加、削除、挿入、参照 ・グラフィックプレーンクラス 属性:表示 グラフィックプレーン-(保持)->リストコレクション-(保持)->JPEGクラス といようなクラス関連が妥当かな、と思います。 JPEGでなく、GIFになっても変更が容易ですし。 あとはコレクションを参照して表示して、インターバル間 sleepするだけかな? 注 1.グラフィックプレーンなんて殆ど造語です。 Javaにはぴったりマッチするクラスがありましたが 名前忘れました。すごく一般的なものです。 2.コレクション Javaにはあるんでしたっけ?あると思いますが。 C++なら、テンプレートで作成すると楽です。 この場合、配列(Array)でもいいのかな、別に。 3.はっきり言ってJavaだとこんなことを考えなくとも楽勝です。 でもちょっと意識してみましょう。
お礼
ありがとうございました。この方法でトライしてみたいと思います。いきずまったら、また教えてください。
- ryouchi
- ベストアンサー率41% (52/125)
アニメーションを実現するアプレットなら、JDKをインストールした際にAnimator.javaというサンプルファイルが同時にインストールされていたとおもいますので、そちらを参考にされてはどうでしょうか? jpgファイルに関してはソースに自分でどこにそのファイルが存在するかを指示しておく必要があります。 通常カレントに「images」などというフォルダを作成しておき、1.jpg,2.jpg・・・10.jpgなどと順番をつけておき、for文などでくり返し表示させたりするのではないでしょうか。 この中で時間をアイドルさせれば可能ではないでしょうか?
補足
申し訳ありません。情報不足でした。私が使用しているのはマイクロソフト社のJ++を使っています。なにか良いサンプルファイルがあればいいのですが、もし知っているサイトがあれば教えてください。
お礼
勉強になります。ありがとうございました。