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

时间:2011-10-11 13:12:47

标签: java servlets javax.imageio

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

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

有什么建议吗?

顺便说一句。我知道Looking for a faster alternative to ImageIO话题。但它没有帮助我。 由于PNG的速度很慢,ImageMagick不是解决方案 我测试了JAI,情况更糟。

提前致谢

编辑:

向您展示一些代码:

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

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

你确定

ImageIO

需要很长时间 - 也许还有另一个问题,例如

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

答案 2 :(得分:0)

请注意,在创建ImageInputStreamsImageOutputStreams时,默认情况下,ImageIO会将临时文件用作缓存。可以通过拨打ImageIO.setUseCache(false)来关闭此功能。

有关更详细的说明,请参阅this answer