2017-07-06 78 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 
相关问题