簡體   English   中英

ImageIO.read(URL)需要很長時間

[英]ImageIO.read(URL) taking long

好吧,所以我試圖從URL讀取一個圖像,它並沒有真正做任何事情。 這是我用來從URL檢索圖像的方法:

    public Image getImage(String url){
    try{
        System.out.println("gettingImage");
        return ImageIO.read(new URL(url));
    }catch(Exception e){
        e.printStackTrace();
        return null;
    }
}

我添加了一個System.out.println()只是為了確保在我調用它時該方法實際執行。

我傳遞給它的網址是: http//i3.kym-cdn.com/photos/images/masonry/000/349/917/065.png (這是一個有效的網址)

我的輸出是這樣的:

gettingImage

它只是說'gettingImage'(來自我添加的System.out.println())並且由於某種原因實際上並沒有得到圖像。 沒有堆棧跟蹤,只有輸出。 任何幫助將不勝感激。 謝謝。

你永遠不應該調用一個需要很長時間才能從主線程內部返回的密集方法,這會凍結你的GUI。 創建一個新的SwingWorker並在其中調用該方法。 看這個例子

嘗試這個....

這個程序只是為了表明圖像是獲得的 ,我只是在網址返回的圖像上使用System.out來證明圖像是獲得的。

我還使用了一個線程,以便進程密集型工作不在負責UI的EDT (Event Dispatcher Thread)

您必須使用Thread或SwingWorker ,否則在EDT上進行過程密集型工作最終會使您的GUI無法響應......

public class UrlTest
{
    public static void main(String[] args)
    {
        new Thread (new Runnable()
        {
            @Override public void run()
            {
                try
                {
                    URL url = new URL("http://i3.kym-cdn.com/photos/images/masonry/000/349/917/065.png");
                    Image img = ImageIO.read(url);
                    System.out.println(img);
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

找到問題為什么這不起作用:這與我的代碼沒有任何關系,這是因為我的互聯網一瞬間閃爍,而且無法從那個小閃爍中恢復過來。 我不知道我的互聯網一直閃爍,但我想這是因為當我把它發送給我的一個朋友時,它在他的電腦上工作得很好,所以它必須是因為互聯網連接。 謝謝你的所有想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM