Java ImageIO.write()最多需要6秒

我正在编写一个Web应用程序,我需要将图像从servlet发送到客户端。 图像是动态生成的,非常大(+ – 2MB)。 它可能是jpeg,png或gif。

现在,我正在使用ImageIO.write()将图像写入输出流,但它的速度很慢。 最多需要6秒才能让客户看到图像。 我需要加快速度。

有什么建议么?

顺便说一句。 我知道寻找更快的替代ImageIO主题。 但它对我没有帮助。 由于PNG的速度很慢,ImageMagick不是解决方案而且我测试了JAI,情况更糟。

提前致谢

编辑:

给你看一些代码:

BufferedImage bi = [code to generate Image]; response.setContentType(mime); ServletOutputStream out = response.getOutputStream(); ImageIO.write(bi,"png",out); 

为了便于阅读,我删除了exception处理。

java中的图像编码通常很慢,但您可能还希望确保安装了本机库,因为它们在性能上有明显的差异。

http://download.java.net/media/jai-imageio/builds/release/1.1/INSTALL-jai_imageio.html

你确定吗?

 ImageIO 

花了这么长时间 – 也许还有另一个问题,例如

  • 与客户端的慢速(网络)连接
  • 图像的生成(计算)需要花费很多时间

请注意,在创建ImageInputStreams和ImageOutputStreams时,默认情况下ImageIO会将临时文件用作缓存。 可以通过调用ImageIO.setUseCache(false)来关闭它。

有关更详细的说明,请参阅此答案 。