javax.imageio.IIOException:Can';无法读取输入文件

javax.imageio.IIOException:Can';无法读取输入文件,java,bufferedimage,javax.imageio,Java,Bufferedimage,Javax.imageio,我正在构建一个压缩给定图像并将其保存为JPEG格式的程序。这是我收到的错误消息: Exception in thread "main" javax.imageio.IIOException: Can't read input file! at javax.imageio.ImageIO.read(Unknown Source) at JPEGCompression.main(JPEGCompression.java:23) 以下是我的主要观点: public class JPEGCompre

我正在构建一个压缩给定图像并将其保存为JPEG格式的程序。这是我收到的错误消息:

Exception in thread "main" javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at JPEGCompression.main(JPEGCompression.java:23) 
以下是我的主要观点:

public class JPEGCompression {

public static void main(String[] args) throws IOException{

    String imageFile = "/tmp/garden.png";
    BufferedImage i = ImageIO.read(new File(imageFile)); // this line produces the error
    showImage("Original Image", i);

    compressAndShow(i, 0.7f);


}

您没有检查该文件是否存在/是否具有该文件的权限,这将是我调试的第一步

还可以尝试以下操作:
String imageFile=“./tmp/garden.png”


我总是在斜杠前面加一个
,告诉它我指的是当前目录,尽管我认为它不是必需的。

我也遇到了这个问题。答案是图片的模型是错误的。因此,您应该将图片的模型从“CMYK”更改为“RGB”。CMYK代表打印机,RGB代表计算机。您可以使用photoshop或imageMagick来完成此操作。

您确定需要图像路径上的前导斜杠吗?@Quilliom哇,就是这么简单!这已经奏效了,谢谢:)请为这个问题添加一个答案,或者接受下面的答案(如果有帮助的话)。现在,这对其他人没有多大帮助。
/
/
意味着完全不同的事情,
/
可以简单地删除,只是多余的。