当前位置: 首页 > 面试题库 >

通过BufferedImage从文件路径加载图像

盖玉石
2023-03-14
问题内容

我的Java应用程序有问题,特别是从计算机中的某个位置加载图像时。

在这篇文章之后,我使用BufferedImageInputFileStream来在计算机上加载图像。首先,我将图片(pic2.jpg)放入源代码中,并且可以正常工作。但是,如果我将图像放到另一个地方(比如说C:\\ImageTest\pic2.jpg),Java
IDE会向我显示一个IllegalArgumentException

return ImageIO.read(in);

这是代码:

public class MiddlePanel extends JPanel {
    private BufferedImage img;

    public MiddlePanel(int width) {    
        //img = getImage("pic2.jpg");       
        img = getImage("C:\\ImageTest\\pic2.jpg");

        this.setPreferredSize(new Dimension(800,460));

    }

    public void paintComponent(Graphics g) {
        // ...
    }

    private BufferedImage getImage(String filename) {
        // This time, you can use an InputStream to load
        try {
            // Grab the InputStream for the image.                    
            InputStream in = getClass().getResourceAsStream(filename);

            // Then read it.
            return ImageIO.read(in);
        } catch (IOException e) {
            System.out.println("The image was not loaded.");
            //System.exit(1);
        }

        return null;
    }
}

问题答案:

getResourcegetResourceAsStream不适用于文件路径,但适用于相对于代码库的路径。如果代码库为,C:则可以找到资源的相对路径为/ImageTest/pic2.jpg

通过加载文件之间..difference FileInputStreamgetResourceAsStream

一个主要区别是可以getResource..与Jar内的资源(不再是)一起使用File。因此FileInputStream 不能
用于访问这种资源。



 类似资料:
  • 我在使用Glide加载图像时有问题。当我试图使用Android默认的它起作用了,但我遇到了内存泄漏问题。 然后我尝试了Glide图像加载器来避免内存泄漏问题。但是我不能使用文件路径加载图像。 我也尝试加载Uri,但也不起作用。 然后我试着从URL Glide加载图像加载URL图像。效果很好。 有人能帮我找到解决这个问题的方法吗?

  • 我试图从画廊获取图像并存储到数据库的路径以供进一步使用。文件路径保存在数据库中,但我无法在ImageView上获得视图。 文件路径为: /storage/emulated/0/DCIM/Camera/image.jpg 这里我得到的图像路径是imgS 在这里,我试图检索路径并在图像视图中显示图像。 注意:文件存在于路径中。

  • 问题内容: 有一个maven项目A。执行mvn全新安装后,将构建项目,并且该jar在我的本地存储库中可用,即 A.jar包含几个类和这些类使用的xml文件 从另一个Maven项目中,我正在调用使用一个XML文件的类中的一种方法。 代码是: 第二个项目位于我的D盘中。在获得绝对路径时,我得到的是\ com \ stackoverflow \ A \ res \ p.xml,这是正确的绝对路径。 但是

  • 我是数据砖或火花的新手,并从数据砖中学习这个演示。我在 AWS 上设置了数据砖工作区。下面的代码来自官方演示,运行正常。但是这个csv文件在哪里?我想检查文件并了解路径参数的工作原理。

  • 我正在尝试用JavaFX制作一个简单的菜单。当我尝试使用相对路径加载图像时,我收到以下异常: 我正在使用eclipse,尽管这个问题似乎不是eclipse特定的,因为我在终端运行时收到了相同的异常。此外,由于某种原因,当文件在包内或src文件夹中时,它会工作(给定的路径会适当更改)。 我当前的活动类在包,位于项目中,具体如下: 项目/src/test/dsp/Menu。JAVA 我试图访问的文件:

  • 我有AngularJs ui路由器在我的应用程序。我需要加载js文件基于我的状态。 当主控状态加载时,headerController、homeController和footerController具有不同的js文件。我们需要加载控制器js文件。是否可以通过UI路由器?