【问题标题】:Java ImageIO.write to classpath?Java ImageIO.write 到类路径?
【发布时间】:2013-03-31 05:57:42
【问题描述】:

我正在尝试使用ImageIO 类来保存图像,然后使用输入流获取资源。我的问题是,每当我尝试创建输入流时,我都会收到NullPointerException。如果我只是简单地将图像文件放在类路径中,它就可以工作。这是我的代码:

ImageIO.write(image, "png", new File("temp.png"));
InputStream imgIs = AptCap.class.getResourceAsStream("temp.png");
byte[] imgData = new byte[imgIs.available()]; // I get null here.

我还尝试为它们指定 C 驱动器上文件的直接位置,但我仍然得到一个空指针异常。我宁愿不这样做,而只是将其保留在类路径中(出于多操作系统支持的目的)。

【问题讨论】:

  • new File("temp.png") 更改为theByteArayOutputStream 并完全避免使用本地磁盘。
  • @AndrewThompson 什么是“theByteArayOutputStream”。我需要定义或导入的变量......或者什么。
  • ..我很失望你选择了这种方式来解决眼前的问题。在这种情况下,创建文件似乎既浪费又不必要。
  • 同意@AndrewThompson。在这种情况下,请尽量将其远离磁盘。
  • @AndrewThompson 我会继续尝试。

标签: java image file-io inputstream javax.imageio


【解决方案1】:
ByteArrayOutputStream baos = new ByteArrayOutputStream(); // create OutputStream
ImageIO.write(image, "png", baos); // write to OS
InputStream imgIs = new ByteArrayInputStream(baos.toByteArray()); // grab bytes from OS
//..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    相关资源
    最近更新 更多