• ベストアンサー

[java] 画像ファイル名の取得方法がわかりません

Image p1CARD = getImage(CodeBase(),"B1G.gif"); で画像ファイルを呼び出したのですが、 逆に、このp1CARDから B1G.gifというファイル名を文字列で取得するにはどうしたらいいのでしょうか? まだjavaの勉強して3ヶ月くらいで参考になるサイトも探せず、ドキュメントをみても理解できなくて質問しました。 4人プレイのトランプゲームを作りたくてつまずいてます。

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

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

  • ベストアンサー
noname#94983
noname#94983
回答No.1

>逆に、このp1CARDから B1G.gifというファイル名を文字列で取得するにはどうしたらいいのでしょうか? 勘違いしているようだけど、p1CARDは、Image。Imageは「ビットマップ方式によるイメージ」のオブジェクト、つまり純粋にイメージだけのオブジェクトであり、画像ファイルのオブジェクトではない。これは、ファイルとは全くの無関係なもの。従って、「そのImageがなんというファイルから生成されたか」は、Imageからはまったくわからない。 単純に、読み込んだファイル名をどこかに保管するなどして管理すればいいだけのことでは。

kinnkinn2
質問者

お礼

本当にすいません。 こんな質問に回答してもらって恥ずかしいです。 Imageには、参照しているファイル名があるものと思っていました。 出直します。 回答ありがとうございました。

関連するQ&A

  • 【Java】画像表示が出来ない!

    Java初心者です。 Eclipseを使って、Javaアプレットでjpeg画像を表示させようとしたのですが、上手くいきません。表示したい画像をインポートして、このようなコードを書きました。 import java.applet.Applet; import java.awt.*; /* <applet code="クラス名.class" width="497" height="600"> <param name="img" value="img/test.jpg"> </applet>*/ public class クラス名 extends Applet { Image img; public void init() { img = getImage(getDocumentBase() , getParameter("/test.jpg")); } public void paint(Graphics g) { g.drawImage(img , 0 , 0 , this); } } Javaアプレットで実行しても、アプレットは真っ白なままです。GIF画像でも試してみましたが、同じく失敗でした。他のJavaアプレットのプログラム(図形を表示したり)は成功したので、私のパソコンのJavaは問題ないと思います。回答よろしくお願いします。

    • ベストアンサー
    • Java
  • インターネット上の画像をJavaで処理する方法について

    こんにちは! いつもお世話になってます(^^) mkimさんのおかげでマウスでブラウザ(IE5.0)上の灰色の部分の座標値を得ることはできました(^o^) 私の質問 http://oshiete1.goo.ne.jp/kotaeru.php3?q=77352 しかし、その灰色の部分に画像を貼り付け、その画像の座標値を得たいのですが、画像をうまく貼り付けることができません。 javaファイルのと同じディレクトリにあるローカルな画像は貼り付けて座標値を得ることができたのですが、インターネット上にある画像を貼り付けることができませんでした。 最終的にはライブカメラの画像を貼り付けようと考えているので、これができないと先に進むことができません。 誰かご存知でしたら教えてください(^^) わかりにくい質問でごめんなさいm(__)m 一応、うまくいかなかったjavaファイルを載せておきます。 // My_Image03.java import java.awt.Graphics; import java.applet.Applet; import java.awt.Image; public class My_Image03 extends Applet { Image im; public void init() { im = getImage(getDocumentBase(), "http://www.honda.co.jp/image/b_hmark.gif"); } public void paint(Graphics g) { g.drawImage(im, 10, 10, this); } } 構文が間違っているのでしょうか? 回答、お待ちしております(^o^)丿

    • ベストアンサー
    • Java
  • RGB値の取得について(java)

    お世話になります。 Javaプログラム上で、指定した画像のRBG値を取得するプログラムを作りましたが、得られた値が思わしくありません。最終的にグレースケール化するためにRGB値を取得したいと考えています。 例えば、原画像の左上の画素のRGB値をgimpで確認すると、それぞれ200前後の値が、プログラムで返された値は50前後になってしまいます。 以下にソースを貼ります。とりあえず、100個の画素のRGB値を取得するように設定しています。まだjavaを勉強し始めて日が浅く、低レベルの質問かもしれませんが、解決策を教えていただける方、よろしくお願いいたします。 import java.io.*; import java.lang.*; import java.awt.*; import java.awt.color.ColorSpace; import java.awt.event.*; import javax.swing.*; import javax.imageio.ImageIO; import javax.media.*; import javax.media.control.*; import javax.media.format.*; import javax.media.util.*; import java.awt.image.*; import java.applet.*; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import java.io.File; import java.io.IOException; import java.util.*; import java.text.*; public class Sample{ static BufferedImage image; public static void main(String[] args){ try { //画像ファイルのデータを読み込む image = ImageIO.read(new File("C:\\QR\\imagefile\\sa.bmp")); } catch (Exception e) { e.printStackTrace(); image = null; } int i,j; int width = image.getWidth(); int height = image.getHeight(); int gray[][] = new int[width][height]; for(i = 0;i < 1 ;i++){ for(j = 0;j < 100 ;j++){ int rgb = image.getRGB(j,i); rgb = 0-rgb; int b = rgb%256; System.out.print(" "+b); int g = (rgb/256)%256; System.out.print(" "+g); int r = rgb/256/256; System.out.print(" "+r); gray[j][i] = (int)((0.299*r + 0.587*g + 0.114*b)); } System.out.println(""); } } }

    • ベストアンサー
    • Java
  • 画像を表示させるプログラム

    こんばんわ。 現在、Javaで画像を表示させるアプレットを作っているのですが、画像が表示されません。 書いたソースは以下です。 import java.applet.Applet; import java.awt.*; /* <applet code="Panel.class" width="497" height="600"> </applet> */ public class Panel extends Applet { Image data; public void init() { data = getImage(getDocumentBase(),"2-1.gif"); } public void paint(Graphics g) { g.drawImage(data, 0, 0, data.getWidth(this), data.getHeight(this), this); } } 2-1.gifという画像ファイルを表示させたいと思っています。画像ファイルはソースファイルと同じディレクトリにあります。appletviewerで実行しているのですが画像がさっぱり表示されません。 SDKのバージョンは1.5を使っています。 お手数おかけしますが、ご教授の程よろしくおねがいします。

    • ベストアンサー
    • Java
  • 内部リソースファイルを取得する際のファイル名の記述方法

     ファイルを開く際の、  フォルダ構造は以下のようになっています。 MainPanel.java      base   - Chara.java      Resource - charachip - image.gif ―――Chara.javaにおいて、以下のようなコンストラクタを作成しました。(int xとint yは気にしないでください) public Chara(int x, int y, String filename){  //画像の読み込み  chara_image = ImageIO.read(getClass().getResource(filename)); } ―――MainPanel.javaで、それを呼び出し、 Chara chipfile = new Chara(3,3,"Resource/charachip/hyouga.gif");  と、してみましたが・・・この第三引数の記述、明らかに間違っていますよね・・・。  この読み取る画像ファイルの指定は、どの.javaファイル(.classファイル)のあるディレクトリをカレントディレクトリとして、又、どのような書式で記述すればよいのでしょうか?  一応最終的にはJARファイルにまとめる予定です。但し、今の段階では(当たり前ですが)classファイルの状態です。  環境は、JDK 6 Update1、Eclipse3.2.0です。 ※挿入されているスペースは全て全角です。

    • ベストアンサー
    • Java
  • 6枚の画像をランダムに表示させる方法を教えてください

    現在do-jaでJavaのアプリケーションを作成しているのですが 6枚の画像をあるエリア内にランダムに配置して表示させたいのですがどういう風にソースを書けば良いか教えてください。 イメージ的にはオセロの盤面に6種類の画像を升目にランダムに配置するものです。 public void start(){ Display.setCurrent(new IAppliCanvas()); } } class IAppliCanvas extends Canvas{ int d1=20; int d2=20; int k1=1; int k2=1; int flgk=1; int flg1=0; int flg2=0; Image img; public static Random rand=new Random(); public IAppliCanvas() { int s=rand.nextInt(6); try { MediaImage mimage; switch(s) { case 1: mimage = MediaManager.getImage("resource:///z-blue.gif"); break; case 2: mimage = MediaManager.getImage("resource:///z-green.gif"); break; case 3: mimage = MediaManager.getImage("resource:///z-orange.gif"); break; case 4: mimage = MediaManager.getImage("resource:///z-prum(1).gif"); break; case 5: mimage = MediaManager.getImage("resource:///z-prum.gif"); break; default: mimage = MediaManager.getImage("resource:///z-red.gif"); break; } mimage.use(); img = mimage.getImage(); } catch(Exception e) { e.printStackTrace(); } } 上記のように記述したのですが同じ画像が全部の升目に表示されてしまいます・・・ ご指南お願いいたします。

  • C# GIFファイルから1コマずつ画像を取得したい

    いつもお世話になっております。 最近、GIFアニメを表示するプログラムを作ろうと思い 色々調べているのですが、うまく行きません やりたいことは  ・複数フレームから構成されるGIFファイルを取り込む  ・ボタン押下など、好きなタイミングでコマを1つずつ表示  ・もしくは、コマの最後まで再生されたら違う絵を表示したい   (複数のGIFファイルをつなげて再生したい)  ・できれば、条件によって再生するアニメーションを分岐させたい  ・1コマずつ表示する時間を設定したい 質問内容は  ・GIFファイルから1コマずつ画像を取得する方法  ・1コマずつに設定されたウェイトを取得する方法 です。 私はよく、GiamというフリーソフトでGifアニメを作ります。 あれは、ウェイトの設定をすることで1コマずつ表示する時間を設定できますが それを取得したり設定したりすることもできるのでしょうか? 参考サイトで、GIFファイルを取り込む方法として試しに 以下のコードを参考にしてみましたが、1コマずつ表示されません・・・ Image image = Image.FromFile(filePath); FrameDimension fd = new FrameDimension(image.FrameDimensionsList[0]); image.SelectActiveFrame(fd, 0); //ここで1コマ目を取得したつもり pictureBox1.Image = image; このようにすると、何故か表示した際に全部再生されてしまいます。。。 それに、プロパティやらを見ても、ウェイトや1コマずつ取得できそうなものが見当たりません・・ 調べ方が悪いのでしょうか; 分かる方がいましたら、よろしくお願いします。 <補足> 言語:C# .Net Framework 3.5

  • getClass().getResourceでのファイル指定

    Toolkit.getDefaultToolkit().getImage(getClass().getResource("image.gif")); というコードを書いたとき、image.gifファイルがclassファイルと同じフォルダにある場合は問題ないですが、他のフォルダにあるときの参照方法はどうすればいいのでしょうか。 getResource()の中はどのように記述してファイルを指定すればいいのでしょうか。 image.gifファイルは「C:\workspace\java\src\draw\gazo\image.gif」にあるものとします。

  • JavaAppletのプログラム添削をお願いします

    初心者です。宜しくお願いします。 JAVA Appletで、クリックするたびに画像が変わるものを作りたいのですが、上手くいきません。 プログラムの添削をお願い致します。 JAVA Appletを利用し、画面をクリックするたびに画像が変わるアプリを作りたいのですが、上手くいきません。 ※コンパイルは通るのですが、実行しても何も表示されません。 [参考URL]http://www.geocities.jp/supermisosan/javastudy/mousechange.html この、画像を変えただけのものを作れればOKです。 以下、今私の書いたプログラム内容です。 書いたと言っても、コピペして部分部分を変えただけですが‥。 【click.java】 import java.applet.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class click extends JApplet implements MouseListener { Image siro,kiiro,aka2,img; int x=0; Image image[]=new Image[5]; Graphics g; public void init() { addMouseListener(this); image[0]=getImage(getDocumentBase(),getParameter("siro.gif")); image[1]=getImage(getDocumentBase(),getParameter("kiiro.gif")); image[2]=getImage(getDocumentBase(),getParameter("aka2.gif")); image[3]=getImage(getDocumentBase(),getParameter("aka2.gif")); image[4]=getImage(getDocumentBase(),getParameter("aka2.gif")); setBackground(Color.white); } public void paint(Graphics g) { g.drawImage(image[x],0,0,this); } public void mouseClicked(MouseEvent me) { x++; if(x==5) x=0; repaint(); } public void mouseEntered(MouseEvent me) { } public void mouseExited(MouseEvent me) { } public void mousePressed(MouseEvent me) { } public void mouseReleased(MouseEvent me) { } } 【click.html】 <html> <head> <title>test applet</title> </head> <body> <applet code="click.class" width=500 height=500> </applet> <hr> <a href="click.java"> source file </a> </body> </html> 何が足りないのでしょうか? 勉強不足ですみません、宜しくお願い致します!!

  • Swingなしで画像ファイルロード

    AWTを使ってJAVAのアプリケーションを作っています。 単純に画像ファイルを開いてウィンドウに表示するものを作りたいです。 しかし、画像ファイルを開く場合、必ずSwingがいるようなのです。 サンプルを探してもこんなのばかり。 ImageIcon icon=new ImageIcon("hoge.jpg"); Image img=icon.getImage(); このとき、ImageIconはSwingの部品なので、イヤなんです。 Swing未満のものを使って、画像をファイルから読み込んでImageオブジェクトをつくれないものでしょうか。

    • ベストアンサー
    • Java

専門家に質問してみよう