我正在尝试使用此代码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
如何解决此异常并获取图像的直方图
答案 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)
虽然其他答案在技术上可以解决您的问题,但您不应该使用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"));