我正在编写一个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);
为了便于阅读,我删除了异常处理。
答案 0 :(得分:3)
java中的图像编码通常很慢,但您可能还希望确保安装了本机库,因为它们在性能上会产生明显的差异。
http://download.java.net/media/jai-imageio/builds/release/1.1/INSTALL-jai_imageio.html
答案 1 :(得分:0)
你确定
ImageIO
需要很长时间 - 也许还有另一个问题,例如
答案 2 :(得分:0)
请注意,在创建ImageInputStreams和ImageOutputStreams时,默认情况下,ImageIO会将临时文件用作缓存。可以通过拨打ImageIO.setUseCache(false)来关闭此功能。
有关更详细的说明,请参阅this answer。