2013-04-09 98 views
1

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

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盘为他们两个上的文件,但我仍然得到一个空指针异常。我宁愿不这样做,但只是保留在类路径中(为了多操作系统支持的目的)。

+2

更改'new File(“temp.png”)''到'theByteArayOutputStream'并完全避免本地磁盘。 – 2013-04-09 00:12:50

+0

@AndrewThompson什么是“theByteArayOutputStream”。我需要定义或导入的变量...或者是什么。 – user1947236 2013-04-09 00:14:43

+0

或者,将'AptCap.class.getResourceAsStream(“temp.png”);'改成'new FileInputStream(“temp.png”);''。但我会推荐第一种方法。 – 2013-04-09 00:15:12

回答

0
ByteArrayOutputStream baos = new ByteArrayOutputStream(); // create OutputStream 
ImageIO.write(image, "png", baos); // write to OS 
InputStream imgIs = new ByteArrayInputStream(baos.toByteArray()); // grab bytes from OS 
//..