我从inputStream创建图像,并使用了两种方法,但两种方法均失败。Java从inputStream创建图像
第1种方法:
FileOutputStream out=new FileOutputStream(file)
byte[] byteBuffer = new byte[1024];
int length = 0;
while ((stream != null) && ((length = stream.read(byteBuffer)) != -1)){
out.write(byteBuffer,0,length);
}
out.flush()
out.close();
stream.close();
这种方法生成的图像,但在尝试打开它。它说“这不是有效的位图文件”。
而第二方法:
BufferedImage imBuff = ImageIO.read(stream);
ImageIO.write(imBuff, 'png', file);
而这一次产生例外。
java.lang.IllegalArgumentException:image == null! 在javax.imageio.ImageTypeSpecifier.createFromRenderedImage(ImageTypeSpe cifier.java:925) 在javax.imageio.ImageIO.getWriter(ImageIO.java:1591) 在javax.imageio.ImageIO.write(ImageIO.java:1520) 在com.k12report.frontend.ClientAuthoringController $$ EOU2Lt2o.getImages( ClientAuthoringController.groovy:55) 在grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PAG eFragmentCachingFilter.java:195) 在Grails的。 plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter .java:63) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor。 java:1145) 在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(的ThreadPoolExecutor 的.java:615) 在java.lang.Thread.run(Thread.java:722)
感谢
什么是'stream'?它的内容是什么?您是否尝试将内容转储到磁盘并通过外部映像程序验证其有效性? – MadProgrammer
stream = response.getEntityInputStream() – Biswas
你确定你有一个有效的图像开始?在第二种方法中,'imBuff'为'null',这在ImageIO不识别文件格式时发生。你需要测试这种情况。你的第一种方法对我来说很好。你可能应该在循环之外检查'stream!= null'以获得可读性和性能。 – haraldK