2012-06-15 13 views
5

私はjavaのURLからインターネットから画像を取得しようとしています。私は次のコードを使用しています。URLからぶら下がっているJava読書の画像

URL url = new URL(webAddress); 
image = ImageIO.read(url); 

WebAddressが何であるかによって、動作することがあり、ときどき無期限にハングアップすることがあります。エラーメッセージは表示されず、実行されて何もしません。

ウェブブラウザにコピーして貼り付けることで、画像が永久にハングする場所にあることは間違いありません。どのパターンが動作しているのか、どのパターンが動作していないのかはわかりません。すべてがjpegです。私はいくつかの検索を行い、URLから画像を取得するためのいくつかの他の方法を見つけましたが、同じことがそれらのすべてで起こります - 彼らはいくつかの画像で動作し、

これを引き起こした原因は何か、また修正する方法はありますか?

+1

ハングするサンプルURLを教えてもらえますか? – npe

答えて

5

ええとこれを試してみて、変更やエラーがスローされたかどうかは分かりません。また、私は多分あなたはfalseにも多分与える問題をsetRedirects(ブール値B)を持っていると思うが、この最初の試してみてください。それでもエラーがで発生した場合にこれを確認するために または多分バグ?:http://bugs.sun.com/view_bug.do;jsessionid=2bc7386e2f8b4e2550f8b10122f?bug_id=6309072

URLConnection con = null; 
    InputStream in = null; 
    try { 
     String webadd="urls go here try the two you have had probelms with and success"; 
     URL url = new URL(webadd); 

     con = url.openConnection(); 
     con.setConnectTimeout(10000); 
     con.setReadTimeout(10000); 
     in = con.getInputStream(); 
     Image img = ImageIO.read(in); 
     if (img != null) { 
      System.out.println("Loaded"); 
     } else { 
      System.out.println("Could not load"); 

     } 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } finally { 
     if(is != null) { 
      try { 
       is.close(); 
      } catch(IOException ex) { 
       // handle close failure 
      } 
     } 

     if(con != null) { 
      con.disconnect(); 
     } 
    } 
} 

EDITを上記のコードを試してみてください:

 Image img=new ImageIcon(url).getImage(); 
+0

ImageIcon技法が機能しました。ありがとう。 – Bergil

+0

うーん、バグかもしれない?私はImageIcon()の習慣に慣れてきてうれしいです。getImage()は決して困っていませんでした。 –

+0

(例外がスローされた場合でも)イメージを読み込んだ後、入力ストリームを閉じることを忘れないでください! –

関連する問題