Java从URL挂起读取图像

时间:2012-06-15 19:08:44

标签: java url javax.imageio

我正试图通过java中的URL从互联网上获取图像。我正在使用以下代码。

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

有时候它会起作用,有时它会无限期地挂起,具体取决于WebAddress是什么。没有错误消息,它只是继续运行而什么都不做。

通过将它们复制并粘贴到网络浏览器中,可以确保图像永久挂起。似乎没有哪种模式可以运行,哪些不运行 - 它们都是jpeg。我已经做了一些搜索,并找到了一些从URL获取图像的其他方法,但同样的事情发生在所有这些 - 它们处理一些图像并挂在其他图像上。

你知道造成这种情况的原因,以及如何解决这个问题?

1 个答案:

答案 0 :(得分:7)

嗯,我不确定试试这个,看看是否有任何变化或错误。我也想也许你有setRedirects(boolean b)为false这也可能会给出问题,但首先尝试一下:

    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();
        }
    }
}

编辑: 或者可能是一个错误?:http://bugs.sun.com/view_bug.do;jsessionid=2bc7386e2f8b4e2550f8b10122f?bug_id=6309072如果上述代码仍然出现错误,请检查一下:

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