Java 打开图像

Java 打开图像,java,image-processing,io,javax.imageio,Java,Image Processing,Io,Javax.imageio,我是个白痴。为什么我不能读取任何文件 import java.awt.Image; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class mainClass { public static void main(String[] args) { try { Image picture = ImageIO.read(

我是个白痴。为什么我不能读取任何文件

import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;


public class mainClass {

    public static void main(String[] args) {
        try {
            Image picture = ImageIO.read(new File("picture.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
文件肯定在src文件夹中

但是它每次抛出异常,即使文件在那里,也没有拼写错误


编辑:第一句是真的,我没有把图像放在词根里。

也去过那里,知道那种感觉。无论如何,试着打印出当前的工作目录,这将告诉你应用程序真正从哪里读取

try
{
    Image picture = ImageIO.read(new File("picture.png"));
}
catch (IOException e)
{
    String workingDir = System.getProperty("user.dir");
    System.out.println("Current working directory : " + workingDir);
    e.printStackTrace();
}

尝试指定图像的路径。例如:

Image picture = ImageIO.read(new File("C:/Desktop/picture.png"));
Image picture = ImageIO.read(new File("C:/workspace/Project/src/picture.png"));
或者,如果图像位于您的工作区中,例如:

Image picture = ImageIO.read(new File("C:/Desktop/picture.png"));
Image picture = ImageIO.read(new File("C:/workspace/Project/src/picture.png"));
您可以看到图像位置(图像的路径)在图像中单击鼠标右键,然后单击“属性”


您可以使用一个slah(/)或两个反斜杠(\\)来分隔路径的目录。

java中有一种二分法

  • 如果您的文件是可交付项目的一部分,一个可以打包到应用程序jar文件中的文件,那么它就是一个资源

    Image picture = ImageIO.read(SomeClassOfYours.class.getResource("/picture.png"));
    
  • 路径是相对于该类的,并且可以设置为绝对路径。所有这些都位于应用程序的java类路径上

  • 如果您的文件是文件系统文件
    文件
    ,则最佳路径是完全绝对路径。相对路径取决于应用程序运行的工作目录,这可能有所不同

    Image picture = ImageIO.read(new File("C:/.../src/picture.png"));
    
  • 这个问题似乎表明映像是应用程序的只读部分,在这种情况下,它是一个资源文件。路径必须区分大小写,路径分隔符必须是正斜杠
    /

    函数将检查图像是否损坏。如果它已损坏,它将抛出异常

    ImageIO.read(new File("C:/Desktop/picture.jpeg"));
    

    你有错误吗?发生了什么?是的,它每次都抛出异常。这就是我在程序中的所有代码。它会抛出什么异常?而且src文件夹并不意味着它会被找到。。它需要位于运行时文件夹中。您是如何运行它的?我正在使用eclipse,并从那里运行它。我所做的只是将图像文件粘贴到src文件夹中,图像文件应该放在eclipse项目的根目录中,而不是src/文件夹中。另外,请发布StackTracer相关参考:另外,使用
    绝对路径
    (如
    /home/Stuff/Pictures/picture.png
    )值得一试。另一方面,它依赖于操作系统。注意:
    File
    对象有一个方法,在本例中,它可能也有同样的作用。好的,这是一个非常有建设性的评论,这是积极的。最近,不知道为什么在没有给出充分理由的情况下如此降低用户声誉。失去了对未来积极贡献的信心。