从同一个包中读取图像文件

时间:2013-12-15 04:12:49

标签: java image embedded-resource

我想从当前包中读取一堆图像文件,因为当我的包含我的图像文件的包导出到其他人的计算机时,我希望能够访问这些文件。

我只是想确保我的程序可以读取图像,无论包装是否在我的电脑中。

我试过

  File file = new File("images.jpg"); // It is wrong because the path is wrong.
  // I want to assign the image as BuffuredImage      
  BufferedImage dealerCardImage1 = ImageIO.read(file); 

我想知道文件的路径应该是怎样的。我该怎么办?

3 个答案:

答案 0 :(得分:1)

将您的图像文件放在当前类文件的包中并尝试:

BufferedImage dealerCardImage1 = ImageIO.read(getClass().getResourceAsStream("images.jpg"));

请注意,getClass().getResourceAsStream(path)返回一个指向从当前包开始的路径的InputStream。

例如,如果您在包HelloWorld中有一个名为com.example的类文件,那么HelloWorld.class.getResourceAsStream("images.jpg")会将InputStream返回到包含此路径的图像:com/example/images.jpg < / p>

答案 1 :(得分:0)

如果您从文件使用中读取

    Image image = new Image();

            image = ImageIO.read(file);

            // Read from an input stream
            InputStream is = getClass()
.getResourceAsStream("/com/statement/SamplePDFStatementFile.txt");
            image = ImageIO.read(is);

//if you read from url

// Read from a URL
    URL url = new URL("http://hostname.com/image.gif");
    image = ImageIO.read(url);

答案 2 :(得分:-1)

ImageIO.read(file); will return null if no registered ImageReader is not found. 

请检查您是否已注册任何ImageReader。

我认为此代码段可以帮助您

File file = new File("images.jpg"); // Assuming images.jpg in my working directory  
FileInputStream fis = new FileInputStream(file);  
BufferedImage image = ImageIO.read(fis); //reading the image file 

您只需将文件包装到FileInputStream中,然后将其传递给read()