【问题标题】:Java creating image from inputStreamJava从inputStream创建图像
【发布时间】:2014-01-26 17:50:21
【问题描述】:

我正在从 inputStream 创建图像,我使用了两种方法,但两种方法都失败了。

第一种方法:

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) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 爪哇:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor .java:615) 在 java.lang.Thread.run(Thread.java:722)

谢谢

【问题讨论】:

  • 什么是stream?它的内容是什么?您是否尝试过将内容转储到磁盘并通过外部映像程序验证其有效性?
  • 流 = response.getEntityInputStream()
  • 你确定你有一个有效的图像开始吗?在第二种方法中,imBuffnull,当 ImageIO 无法识别文件格式时会发生这种情况。您需要针对这种情况进行测试。你的第一种方法对我来说看起来不错。不过,您可能应该在循环外检查 stream != null 的可读性和性能。
  • 谁说:这不是一个有效的位图文件? (这对我来说不是很清楚......)

标签: java image grails javax.imageio


【解决方案1】:

好吧,对于 这不是一个有效的位图文件

如果您使用依赖于操作系统的文件路径,则更推荐使用 File.separator 而不是使用“\”或“/”。它们使您的代码更具可移植性。

例子:-

File f = new File("C:"+File.separator+"Personal"+File.separator+"test.bmp");

【讨论】:

  • 我正在使用 grails,所以def root = getServletContext().getRealPath(""); String path = root+'/authoringImages/'+images File file = new File(path);
  • 对我来说,使用 / 作为文件分隔符总是(使用 File-Object 时)...也适用于 windows... .
猜你喜欢
  • 2013-11-30
  • 2015-03-16
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多