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)来关闭它。
有关更详细的说明,请参阅此答案 。