如何读取未保存在与我需要使用它们的类相同的包中的图像?

时间:2016-05-24 04:17:26

标签: java image inputstream bufferedimage imageicon

例如,如果我使用这种方式来获取图像:

        InputStream imgpacman2up = Tablero.class.getResourceAsStream("pacmanup1.png");
        BufferedImage pacman2upImg = ImageIO.read(imgpacman2up);
        pacman2arriba = new ImageIcon(pacman2upImg).getImage();

如果图像保存在项目的另一个包中的文件夹中,图像的路径(“在本例中为”pacmanup1.png“)将如何修改?

谢谢!

3 个答案:

答案 0 :(得分:0)

引用getResourceAsStream()的javadoc:

  

在委托之前,使用此算法从给定的资源名称构造绝对资源名称:

     
      
  • 如果 String[] arrStr; switch (sensorType) { case "acc": { curCSV = db.rawQuery("SELECT * FROM " + DATA_ACC_TABLE_NAME + " WHERE id = " + subNum, null); arrStr = new String[]{curCSV.getString(0), curCSV.getString(1), curCSV.getString(2),curCSV.getString(3), curCSV.getString(4)}; break; } case "gyro": { curCSV = db.rawQuery("SELECT * FROM " + DATA_GYRO_TABLE_NAME + " WHERE id = " + subNum, null); arrStr = new String[]{curCSV.getString(0), curCSV.getString(1), curCSV.getString(2),curCSV.getString(3), curCSV.getString(4)}; break; } } name'/')开头,那么资源的绝对名称就是'\u002f'name之后的部分1}}
  •   
  • 否则,绝对名称的格式如下:

    '/'
         

    modified_package_name/name 是此对象的包名称,其中modified_package_name替换为'/''.')。

  •   

答案 1 :(得分:0)

假设您的图片位于包aaa.bbb.ccc中,请使用以下/aaa/bbb/ccc

答案 2 :(得分:0)

如果它位于某个名为"资源"的文件夹中。在src中,下面的代码访问java类中的图像。

InputStream imgpacman2up = SampleTable.class.getResourceAsStream("/resources/pacmanup1.png");
        BufferedImage pacman2upImg = ImageIO.read(imgpacman2up);
        pacman2arriba = new ImageIcon(pacman2upImg).getImage();

如果它在某个其他包中,则以下代码访问java类中的图像。

InputStream imgpacman2up1 = SampleTable.class.getResourceAsStream("/com/abc/ab/pacmanup1.png");
    BufferedImage pacman2upImg1 = ImageIO.read(imgpacman2up1);
    pacman2arriba1 = new ImageIcon(pacman2upImg1).getImage();