打开图像

时间:2012-03-15 00:01:55

标签: 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(new File("picture.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

该文件肯定在src文件夹中。

但它每次都抛出异常,即使文件存在,也没有拼写错误。

编辑:第一句话是真的,我没有把图像放在根目录中。

4 个答案:

答案 0 :(得分:2)

那边也去过,知道那种感觉。无论如何,尝试打印出当前的工作目录,这将告诉你完全应用程序真正读取的位置。

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();
}

答案 1 :(得分:0)

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

Image picture = ImageIO.read(new File("C:/workspace/Project/src/picture.png"));

或者,如果图像位于工作区中,例如:

<script type="text/javascript">
    function SetName() {

        if (window.opener != null && !window.opener.closed) {
            var txtName = window.opener.document.getElementById("TextBox1");
            txtName.value = document.getElementById("Initialtest").value;
            var txtName1 = window.opener.document.getElementById("TextBox2");
            txtName1.value = document.getElementById("Initialtest2").value;
        }
            alert("test");
            window.close();
    }
</script>

您可以在图像中单击鼠标右键,然后单击属性,查看图像位置(图像路径)。

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

答案 2 :(得分:0)

java中存在二分法。

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

    Image picture = ImageIO.read(SomeClassOfYours.class.getResource("/picture.png"));
    
  2. 路径相对于该类,可以成为绝对路径。全部在应用程序的java类路径上。

    1. 如果您的文件是 文件系统文件 File,那么最佳路径是完整的绝对路径。相对路径取决于运行应用程序的工作目录,并且可能不同。

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

答案 3 :(得分:0)

ImageIO.read() 函数将检查图像是否已损坏。如果它已损坏,则会抛出异常。

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