- PR -

ファイル名から画像を取得する方法。

投稿者投稿内容
ぶぅぶぅ
常連さん
会議室デビュー日: 2005/10/19
投稿数: 20
投稿日時: 2005-12-16 16:19
こんにちは。
指定したフォルダ内にある画像(jpg)ファイルを全て読み込んで処理をするというものをしたいと思っています。
ところが、ファイル名を取得するまではできるのですが、それをImage型配列に入れることができないため、処理を呼ぶことができません。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23829&forum=12&6

↑これで任意のフォルダ内にあるファイルの名前を取得して
img[i]=ImageIO.read(new File(fileList[i].getName()));
とか言う風にはできませんよね?
ほかに配列に画像を読み込む方法があればお願いします!
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2005-12-16 16:36
引用:

ぶぅぶぅさんの書き込み (2005-12-16 16:19) より:
img[i]=ImageIO.read(new File(fileList[i].getName()));
とか言う風にはできませんよね?


どのようなコードを書いて、できなかったのですか ?

とりあえずfileList[i]がFileならgetName()とかは不要でしょう。
new String("hoge".toString())と同様ですね。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-12-16 18:41
fileList が File 型の配列であれば もう一度 File インスタンスを new する必要はありませんね。
getName() で取得できるのはファイル名なので、ファイルがカレントディレクトリにないと読み込めないでしょう。
ぶぅぶぅ
常連さん
会議室デビュー日: 2005/10/19
投稿数: 20
投稿日時: 2005-12-16 21:41
とりあえず、今こんな感じです。
最後にエラー文が出て止まってしまいます。
エラー文は
-----------------------------------------------------------

java.lang.ArrayIndexOutOfBoundsException: 100
at sabun.SabunAverage.<init>(SabunAverage.java:84)
at sabun.SabunAverage.main(SabunAverage.java:63)
Exception in thread "main"

-----------------------------------------------------------

こんな感じです。問題のソースは↓です。

public SabunAverage(){
JFrame frame = new JFrame("Test");
frame.setBounds(0,0,350,380);
ControlPanel cp = new ControlPanel();

JPanel panel = new JPanel();
panel.setLayout(null);

File targetDir = null;
targetDir = new File("./iii");
if (targetDir.exists() && targetDir.isDirectory()) {
File[] fileList = targetDir.listFiles();
for (int i = 0; i < fileList.length; i++) {
// System.out.println(fileList[i].getName());
try {

if(fileList[i].getName() == "Thumbs.db") break;
img[i]=ImageIO.read(fileList[i]);  ← ここらでエラー。img[i]に読み込めてない?!
avesabun = ASabun(img[i]);  ←このメソッドは単体では動くので問題は無いと思います。

} catch (IOException e) {
e.printStackTrace();
break;
}


}
}



label1.setBounds(10,10,320,240);
cp.setBounds(10,270,150,140);


panel.add(label1);

panel.add(cp);

frame.getContentPane().add(panel);
frame.setVisible(true);
}
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2005-12-16 22:31
img[]はどこで用意してるんでしょうか。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-12-16 23:19
「ファイル名から画像を取得する方法。」とは関係のない例外ですね。
配列の扱い方について調べてみてはいかがでしょう。
あと ArrayIndexOutOfBoundsException がどんな例外かどうかも。
ぶぅぶぅ
常連さん
会議室デビュー日: 2005/10/19
投稿数: 20
投稿日時: 2005-12-16 23:23
img[]はpublic SabunAverage(){ }の外に宣言してあります。

さっきソースをいじっていたら、何とかファイルは読み込まれているみたいです。
しかし、画像ファイルが入っているフォルダの中にあるThumbs.dbというファイルが邪魔をしてエラーになってしまいます。
if(fileList[i].getName() == "Thumbs.db") break;
という1文を追加してもうまくいっていないようです。
もう少し考えて見ますが、うまくいかなければまたここに質問したいと思います。
返答ありがとうございました!
ぶぅぶぅ
常連さん
会議室デビュー日: 2005/10/19
投稿数: 20
投稿日時: 2005-12-17 21:21
いろいろ試していたら、できました!!
ありがとうございました!

スキルアップ/キャリアアップ(JOB@IT)