【问题标题】:IllegalArgumentException Input == nullIllegalArgumentException 输入 == null
【发布时间】:2013-07-28 06:07:05
【问题描述】:

我正在尝试将图像读取为InputStream。但出于某种原因,我总是收到IllegalArugmentException

这是我的代码:

BufferedImage i = null; 
i = ImageIO.read(getClass().getResourceAsStream("/res/graphics" + path));

【问题讨论】:

  • "/res/graphics" + path 的结果是什么?
  • 你能确保资源路径可以访问吗?
  • 您确定您的程序能够读取该文件吗?
  • 尝试将getResourceAsStream 更改为getResource。他们评估路径的方式不同。
  • @AndrewThompson API 文档说它们是相同的,它们都委托给 ClassLoader。

标签: java image embedded-resource javax.imageio illegalargumentexception


【解决方案1】:

原因:

您的资源评估为null,这就是异常的原因

API doc

抛出: IllegalArgumentException - 如果输入是 null

解决方案:

如果res/graphics/whatever 在根目录下的类路径中,那么它将返回非空

【讨论】:

    【解决方案2】:

    基本上,同名的资源不存在。该资源由类加载器以与名称为res.graphics.whatever 的类相同的方式定位,当然还有更相关的任何内容。因此,只需使用相同的方法使类可访问,从而使该资源可访问。

    【讨论】:

      【解决方案3】:

      似乎"/res/graphics" + path 没有评估为您想要的值。

      下面是你如何使用BufferedImage

      public File myImg = new File("someImage.png");
      BufferedImage in = ImageIO.read(myImg); 
      //Just an example
      BufferedImage newImage = new BufferedImage(in.getWidth(), in.getHeight(), BufferedImage.TYPE_INT_ARGB);
      

      【讨论】:

      猜你喜欢
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      相关资源
      最近更新 更多