【问题标题】:java.net.MalformedURLException: unknown protocol: fjava.net.MalformedURLException:未知协议:f
【发布时间】:2017-07-06 12:20:57
【问题描述】:

我正在尝试使用此代码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 

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

【问题讨论】:

    标签: java histogram


    【解决方案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"));
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        协议无效。

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

        文件 URI 采用 file://host/path 的形式

        其中host 是可访问路径的系统的完全限定域名,path 是directory/directory/.../name 形式的分层目录路径。如果 host 被省略,它被认为是“localhost”,即解释 URL 的机器。

        所以网址应该是:

        file://F:/test.jpg
        

        【讨论】:

          猜你喜欢
          • 2011-11-22
          • 1970-01-01
          • 2020-04-20
          • 1970-01-01
          • 2019-03-28
          • 2012-09-03
          • 2016-10-08
          • 1970-01-01
          相关资源
          最近更新 更多