• ベストアンサー

javaで画像ファイルを連続に取り込む方法

javaのプログラムで、 load("00001.jpg"); というようにjpgファイルを読み込んでいます。 これを00001.jpg~000009.jpgまで連続に読み込みをしたいのですが、どのようにすればよいでしょうか。 変な書き方になりますが、 for(int i=0;i<9;i++){ load("0000i.jpg"); } のようにしたいです。これだとiが文字として認識されてしまいますが・・・

  • Java
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • houou0123
  • ベストアンサー率26% (4/15)
回答No.3

#2です ちなみに画像ファイルの読み込みだと BufferedImage[] readImage ; try { for(int i = 0 ; i < 9 ; i++ ){ readImage[i] = ImageIO.read(new File("0000"+(i+1)+".jpg")); } } catch (Exception e) { e.printStackTrace(); readImage = null; } やっつけでつくったけどこんな感じでいいんじゃない?

laview
質問者

お礼

プログラムまで作っていただいてありがとうございます。 参考にして、勉強していきたいと思います。

その他の回答 (3)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.4

他の方が書いている様に "0000" + i でもいいんですが、目先の問題の解決方法だけではなくDecimalFormatなどのフォーマッタを用いて先を見据えた作り方をした方が良いでしょう。

laview
質問者

お礼

御意見ありがとうございます。 これから勉強していく身なので、方向性を示していただくととても助かります。

  • houou0123
  • ベストアンサー率26% (4/15)
回答No.2

その記述だとiが文字列として認識されてしまいますので、 load("0000" + i + ".jpg") ; にしなければいけませんね。 ちなみにfor文の書き方ですが、00001~00009まで読みたいのであれば for(int i = 1 ; i < 10 ; i++) { load("0000" + i + ".jpg") ; } のようにしてください。

回答No.1

load("0000" + Integer.toString(i) + ".jpg"); だと思うけど? loadが何だか知らないけどね。

laview
質問者

お礼

文字列とiを分ければいいんですね! ありがとうございます。

関連するQ&A

  • OpenCVの連続画像読み込みについて

    こんにちは。 連続画像の読み込みが出来なくて困ってます。 今まではVisualStudioを使い、読み込んでいたので IplImage* src_img = cvLoadImage("sample.bmp", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); if (src_img == NULL){ return 0; } のように書き直して動かしていたのですが http://opencv.jp/sample/initialization.html#combine の画像の連結のところで if (argc < 2) { return 1; } else { img_num = argc - 1; img = (IplImage **) cvAlloc (sizeof (IplImage *) * img_num); for (i = 0; i < img_num; i++) { img[i] = cvLoadImage (argv[i + 1], CV_LOAD_IMAGE_COLOR); if (img[i] == 0) return -1; } } ここをどのようにすれば連続画像を読み込めるようになるのか教えていただけないでしょうか。 よろしくお願いいたします。

  • jpeg画像でアニメーションを作る

    jpeg画像10枚くらいをつかい、アニメーションを作りたく以下のようなプログラム(全部載せられませんでした)を組んでみました。しかし、画像読み込みにすごく時間がかかり、アニメーションという感じがしないほど、さっと画像が表示されて終わってしまいます。もっと、一枚一枚をゆっくり表示させたく画像読み込みの時間も短縮したいのですが、何か良い方法はありますでしょうか(ちなみに画像のキャンバスサイズは512×384です) import java.applet.*; import java.awt.*; import java.net.*; public class im2a extends Applet implements Runnable{ Image im[] = new Image[10]; URL url; String fn[]={"anime10.jpg","anime11.jpg","anime4.jpg","anime5.jpg",  "anime1.jpg","anime2.jpg","anime1.jpg","anime2.jpg",  "anime8.jpg","anime7.jpg"}; Thread th; MediaTracker mt = new MediaTracker(this); String ms =""; String s =""; int i=0; int j=0; int dt=100; int phase=2 ; boolean ok=false;   public void start(){ th =new Thread(this); th.start(); }    public void readImage(){ ms ="画像入力準備中"; repaint(); for(i=0;i<9;++i){ im[i]=getImage(getDocumentBase(),fn[i]); mt.addImage(im[i],i); ok=false; while(!ok){ try{ Thread.sleep(2000); } catch(InterruptedException ee) { } ok=mt.checkID(i,true); } ms="画像"+i+"読み込み終了"; repaint(); } }

  • JavaでRandom Access Fileから「整数」を読み込む

    JavaでRandom Access Fileから「整数」を読み込みたいのですがうまくいきません。 読み込むRandom Access Fileは次のようになっていて最初の" 3 0 0"だけint型で読み込んで後はそのまま文字列で読み込むつもりです。 ※もともとStringで書き込んだので、各文字の間には一つ分のspaceが入っています。  3 0 0     3 0 5     S p l i t                     L G           P a l a c e   o f   D i o c l e t i a n   ( D a l m a t i a ) 下記のように文字列を読み込むプログラムは出来ました。 int keyLength = 5; String key = ""; for (int i = 0; i < keyLength; i++) key += inout.readChar(); 今回はそれを整数で読み込みたいです。それでreadIntを使いました。 int key = 0; key = inout.readInt(); でも、結果はこうなります: 33423840 305 Split LG Palace of Diocletian (Dalmatia) このとてつもなく大きい数字"33423840"はなんでしょう??? "300"が欲しいのですが…。 どなたか解決方法を教えて下さい。お願いします。

    • ベストアンサー
    • Java
  • javaの中でCを使う方法

    Cで書かれたプログラムを、javaを使って書き直せないものかと思い、四苦八苦しているのですが、ネット上ではJNIなどが出ているのですがほかにもっと良い方法がないだろうかと、考えているのですが、なかなかうまくゆかず、ここに質問することにしました。特にわからないのは、Cの関数をどうやって引っ張ればよいのかということと、ポインタの代わりにどうすればよいのかということです。 サンプルにCで書いたプログラムを以下に示します。これを例に指摘してくださるとわかりやすいと思います。 test.c void io(void); void mem(int a, int b): void main(void) { int i; for (i = 0x10000; i <= 0x1ffff; i++){ mem(i , i & 0x0f); } for (;;) { io(); } } 以上です。 よろしくご教授願います。

    • ベストアンサー
    • Java
  • java

    このプログラムをjavaでかくとどうなりますか? #include<stdio.h> #include<stdlib.h> #include<time.h> int comp(const void *a, const void *b){  return *(int*)a - *(int*)b; } int main(void){  int i;  int sep[9];  srand((unsigned int)time(NULL));  sep[0] = 0;  sep[8] = 100;  for(i=1;i<8;i++){   sep[i] = rand() % 101;  }  qsort(sep+1, 7, sizeof(int), comp);  for(i=0;i<8;i++){   printf("a[%d] = %d;\n", i, sep[i+1] - sep[i]);  }  return 0; }

    • ベストアンサー
    • Java
  • javaのプログラミング(連続する整数の和)

    javaのプログラミング(連続する整数の和) 大学で出た課題です。 「ある自然数nを入力し、n=○+○+…+○と連続する整数の和で表すプログラミングをつくれ。」というものです。 以下に、私が考えたものを載せます。これだと連続する2つの整数の和では表すことができるのですが、3つ以上の整数の和を表すことができません。どうすればよいでしょうか? import java.io.*; public class  n { public static void main(String[] args) { int n; BufferedReader rd = new BufferedReader(new InputStreamReader(System.in)); try{ String line; System.out.print("整数:"); line = rd.readLine(); n = Integer.parseInt(line); } catch(IOException e){ System.out.println("入力エラーが発生しました。"); return; } catch(NumberFormatException e){ System.out.println("整数を入力してください。"); return; } for(int i=1;i<=n;i++){ int k=i+1; if(i+k==n) System.out.println(i+"+"+k); } } }

  • javaのことで

    ---MainPanel.java--- import java.awt.Dimension; import java.awt.Graphics; import java.event.MouseEvent; import java.event.MouseListener; import javax.swing.JPanel; import java.util.Random; public class MainPanel extends JPanel implements MouseListener { public static final int WIDTH = 640; public static final int HEIGHT = 480; private static final int NUM_FILE = 4; private File[] file; private int prev; public MainPanel() { setPreferredSize(new Dimension(WIDTH, HEIGHT)); file = new File[NUM_FILE]; for (int i = 0; i < NUM_FILE; i++) { file[i] = new File(i, this); } select(); addMouseListener(this); } private void clear() { for (int i = 0; i < NUM_FILE; i++) { file[i].delete(); } } private boolean check(int a, int b) { return a == b || a == prev || b == prev; } private void select() { Random rand = new Random(); int a, b; do { a = rand.nextInt(NUM_FILE); b = rand.nextInt(NUM_FILE); } while (check(a, b)); file[a].set(0, 0); file[b].set(file[a].getX() + file[a].getWith() + File.SPACE, 0); } public void paintComponent(Graphics g) { super.paintComponent(g); for (int i = 0; i < NUM_FILE; i++) { if (file[i].isSelected()) { file[i].draw(g); } g.drawString("ファイル" + (i + 1) + " … " + file[i].getCnt(), 0, HEIGHT * 3 / 4 + i * 15); } } public void mouseClicked(MouseEvent e) { int x = e.getX(); int y = e.getY(); for (int i = 0; i < NUM_FILE; i++) { if (file[i].isSelected()) { // 表示されていて // 画像内なら if (x > file[i].getX() && x < file[i].getX() + file[i].getWidth() && y < file[i].getY() && y > file[i].getY() + file[i].getHeight()) { file[i].count(); prev = i; clear(); select(); break; } } } repaint(); } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } } フレームを用意してMainPanelを付加し,pack();してください.

  • ファイル読み込みを配列に入れる方法

    ファイルから数字を読み込んで 並び替えて出力するプログラムを作成しているのですが ファイルから一度に配列に取り込んで、その配列で並び変えたいのですが取り込みができないのです、int型の配列に一度に取り込むのは可能なのでしょうか? import java.io.*; class Sort { public static void main(String[] args) { String path = args[0]; File file = new File(path); FileReader fr = null; int[] buf = new int[(int)file.length()]; try { fr = new FileReader(file); fr.read(buf); for (int i=0; i<buf.length-1;i++) { int mini=buf[i]; int miniIndex = i; for(int j = i+1; j<buf.length;j++){ if(buf[j] < mini){ mini = buf[j]; miniIndex = j; } } buf[miniIndex] = buf[i]; buf[i] = mini; } for(int i =0; i<buf.length;i++) { System.out.print( buf[i]+","); } } catch (IOException e) { System.out.println("ファイル入力エラー"); } } } と作ってみたのですが‥ ご教授お願いいたします。

    • ベストアンサー
    • Java
  • JAVAで...

    プログラム初心者です。 九九を表示するプログラムの一部ですが・・・ ---------------------------------------------------------- for(int i=1;i<10;i++){ for(int j=1;j<10;j++){ System.out.print(i+"*"+j+"="+(i*j)+","); ---------------------------------------------------------- これで 1*1=1、1*2=2.1*3=3、..... 2*1=2、2*2=4、.... 3*1=3....................... | 9*1=9・・・・・・........ のようにちゃんと表示されますが・・・ なんでこのようになるのでしょうか・・・。 考えてもわからないです。 私には1*1=1、2*2=4、3*3=9、4*4=16・・・・・9*9=81 になるようにしか考えられないのですが・・・ 説明がわかりにくいかもしれないですが・・ お願いします。

    • ベストアンサー
    • Java
  • javaのプログラム

    int型の配列の各要素に1~10の乱数を代入し、各要素の値を縦向きの*のグラフで表示するプログラムを作っているのですが、結果がランダムででるので、自分の書いたプログラムが正しいのかわかりません。ソースを載せますので合っているのか間違っているか教えて下さい。もし間違っているならどこが間違いなのか教えていただけると嬉しいです。よろしくお願いします。 ●ソース import java.util.Random; import java.util.Scanner; class Graph { public static void main(String[] args){ Random rand = new Random(); Scanner stdIn = new Scanner(System.in); System.out.print("要素数:"); int n = stdIn.nextInt(); int a[] = new int[n]; for (int i = 0; i < n; i++) a[i] = 1 + rand.nextInt(10); for (int i = 1; i <= 10; i++){ for (int j = 0; j < n; j++) if (a[j] <= i) System.out.print("* "); else System.out.print(" "); System.out.println(); } } } ●実行例 要素数:12 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

    • ベストアンサー
    • Java

専門家に質問してみよう