Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(eclipse 画像が読めません。)
閲覧数:105
掲示板(eclipse 画像が読めません。)
名前
匿名
題名 eclipse 画像が読めません。
質問内容

質問を評価する
(0ポイント)
テトリスのブロックを画像にしたいと思い、16×16のビットマップ画像8つを用意しました。
プロジェクトのsrcがあるフォルダにimgフォルダを作り、そこにその画像を入れました。
そして、以下のように読み込みしています。

Image[] block_i=new Image[8];
block_i[0]=getToolkit().getImage("img/red.bmp");
//以下略

そして、以下のようにして描画させようとしています。

g.drawImage(block_i[space[r][c]%7],getInsets().left+c*16,getInsets().top+r*16,this);

ですが、なぜか画像が描画されません。

System.out.println(block_i[space[r][c]%7].getHeight(this));

で画像の高さを調べてみると-1と出力されたため、画像の読み込みができていないようです。
相対パスでいけると思っていたのですが、何が間違っているのでしょうか?
質問日時 2014-02-05 21:04:22
名前
匿名
回答内容

回答を評価する
(0ポイント)
Toolkitは読み込みの完了を待たないよ。
そこはぐぐれば出てくる。
また、Toolkitを使うのはだいぶ古いやり方で他にもいろい
ろあるから調べてみよう。
回答日時 2014-02-05 21:45:29
名前
回答内容

回答を評価する
(0ポイント)
Eclipse から走らせてるなら、相対パスの基準は Run Configuration - 
Arguments の Working directory の設定にしたがいます。
ただ、bmp だと余白が透過に出来ないかな?
回答日時 2014-02-05 23:50:48
名前
匿名
回答内容

回答を評価する
(0ポイント)
ToolKitは古いんですね。
(授業で使った先生のサンプルを参考に使っていたのですが・・・)
ほかにいい方法があるというので調べてみることにします。

パスの考えは間違ってないですよね?
回答日時 2014-02-05 23:59:32
名前
匿名
回答内容

回答を評価する
(0ポイント)
もともとのプログラム(MFC版)で使ってた画像がbmp画像で、正方形のブロックの画像です。
余白等はないので透過させたりする必要はないので問題ないと思います。

今「java 画像 描画」でgoogle検索してみたのですが、AppletやToolKitを使った情報ばかり・・・
MediaTrackerで読み込みが終わるまで待つという手段もあるようですが、以下のサイトを参考にしてみるも、実行しても画像は描画されませんでした。

MediaTrackerによる画像読み込み待ち - 画像の表示 - Javaアプレット入門
http://www.javadrive.jp/applet/image/index5.html

Javaアプリケーションでは画像の読み込みは今はどのようにするのがよいのでしょうか?
回答日時 2014-02-06 00:20:48
名前
回答内容

回答を評価する
(0ポイント)
どれがいいかはフレームワークによります。
javax.imageio.ImageIO は物理的に読み書きします。
読めない場合その場で例外が出ますので原因が探しやすいでしょう。
回答日時 2014-02-06 01:10:13
名前
匿名
回答内容

回答を評価する
(0ポイント)
MediaTracker使ってもだめなら単純にパスが違うんでしょ。
回答日時 2014-02-06 06:46:32
名前
匿名
回答内容

回答を評価する
(0ポイント)
MediaTracker tracker = new MediaTracker(this);
block_i[0]=getToolkit().getImage("img/red.bmp");
//中略
for(int n=0;n<8;n++){
    tracker.addImage(block_i[n], n);
}
try {
    tracker.waitForAll();
}
catch (InterruptedException e) {
}

というようにまとめて書いているのですが、書き方はあっているでしょうか?
回答日時 2014-02-06 14:08:05
名前
匿名
回答内容

回答を評価する
(0ポイント)
あー、そもそもToolkitて、bmp読めないんじゃなかった?
回答日時 2014-02-06 16:53:20
名前
匿名
回答内容

回答を評価する
(0ポイント)
画像をgifにしたら描画されました。
javaだとbmpだめなんですね。
覚えておきます。
ありがとうございました。
回答日時 2014-02-06 17:28:25
回答内容を入力し、「確認」ボタンをクリックしてください。
ログインしていません。ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 ユーザIDをお持ちでない方は「ID登録」からユーザIDの登録を行ってください。
氏名 匿名
回答内容
 



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道