java.net.MalformedURLException:未知协议:f

时间:2017-07-06 12:20:57

标签: java histogram

我正在尝试使用此代码Displaying a histogram of image data获取图像的直方图。通常它在url给出的输入图像时工作正常。但是我从本地目录中提供图像

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 

如何解决此异常并获取图像的直方图

3 个答案:

答案 0 :(得分:1)

F:/test.jpg不是有效的网址。对于文件,网址为file://F:/test.jpg 其中file是协议

答案 1 :(得分:1)

该协议无效。

如果您需要从文件系统加载文件,则需要使用file URI scheme

  

文件URI采用file://host/path

的形式      

其中host是可在其上访问路径的系统的完全限定域名,path是directory/directory/.../name形式的分层目录路径。如果省略host,则将其视为" localhost",即解释URL的机器。

所以网址应为:

file://F:/test.jpg

答案 2 :(得分:1)

虽然其他答案在技术上可以解决您的问题,但您不应该使用URLread函数,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"));