2017-07-06 108 views
1

我想使用此代碼Displaying a histogram of image data獲取圖像的直方圖。通常,當輸入由url給出的圖像時,它工作正常。但是,當我把圖像從本地目錄java.net.MalformedURLException:未知的協議:f

private BufferedImage getImage() { 
    try { 
     return ImageIO.read(new URL(
      "F:/test.jpg")); 
    } catch (IOException e) { 
     e.printStackTrace(System.err); 
    } 
    return null; 
} 

它給人例外,

java.net.MalformedURLException: unknown protocol: f 

如何解決這個異常,並得到一個圖像

回答

1

而其他的答案將在技術上解決你的問題,你不應該使用這個URL。還有其他簽名的read功能,one which takes a File和一個which takes an InputStream instead,這樣你就可以使用以下的:

return ImageIO.read(new File("F:/test.jpg")); 
// or 
return ImageIO.read(new FileInputStream("F:/test.jpg")); 
+1

感謝它爲我工作.. –

1

F:/test.jpg的直方圖不是有效的URL。對於文件,URL是file://F:/test.jpg 其中file是協議

1

該協議無效。

如果需要從文件系統加載一個文件,你需要使用file URI scheme

的文件URI需要的file://host/path

形式,其中host是系統的完全合格的域名上其中路徑可訪問,路徑是directory/directory/.../name形式的分層目錄路徑。如果省略了host,則它被認爲是「localhost」,即正在解釋URL的機器。

所以URL應該是:

file://F:/test.jpg 
相關問題