3

我正在尝试读取一个名为 .bmp 的文件circle1.bmp。它位于我已导入以下文件的包中。

到目前为止,我有以下代码,但是当我运行以下代码时,我得到:

javax.imageio.llOException:无法读取输入文件!

public void setUp() throws IOException
{
    BufferedImage image = ImageIO.read(new File("circle1.bmp"));
    byte[][] greenInputData = new byte[30][40];

    for (int x = 0; x < inputData.length; x++)
    {
        for (int y = 0; y < inputData[x].length; y++)
        {
            int color = image.getRGB(x, y);
            //alpha[x][y] = (byte)(color>>24);
            //red[x][y] = (byte)(color>>16);
            greenInputData[x][y] = (byte)(color>>8);
            //blue[x][y] = (byte)(color);
        }
    }
    this.inputData = greenInputData;

    System.out.println(this.inputData);
}
4

2 回答 2

-1

你应该尝试类似的东西

image = ImageIO.read(getClass().getResourceAsStream("path/to/your/file.bmp"));
于 2012-10-28T15:32:46.033 回答
-1

相对于用户目录,您的图像文件路径可能不正确。要找出 Java 开始查找的位置,用户目录的位置,请在程序中的某处放置类似这行代码的内容:

System.out.println(System.getProperty("user.dir"));

也许您最好将图像作为从资源获取的 InputStream 而不是作为文件获取。例如,

image = ImageIO.read(getClass().getResourceAsStream("circle1.bmp")); //prefered

或者

image = ImageIO.read(getClass().getResource("circle1.bmp"));

这将在相对于类文件位置给定的路径中查找图像,事实上,如果您的图像位于 jar 文件中,这就是您必须执行的操作。

于 2012-10-28T21:38:24.147 回答