使用JavaServlet动态生成图片计算机等级考试

文章作者 100test 发表时间 2010:01:01 12:29:16
来源 100Test.Com百考试题网


  在Web应用中,经常需要动态生成图片,比如实时股市行情,各种统计图等等,这种情况下,图片只能在服务器内存中动态生成并发送给用户,然后在浏览器中显示出来。

  本质上,浏览器向服务器请求静态图片如jpeg时,服务器返回的仍然是标准的http响应,只不过http头的contentType不是text/html,而是image /jpeg而已,因此,我们在Servlet中只要设置好contentType,然后发送图像的数据流,浏览器就能正确解析并显示出图片。

  在Java中,java.awt和java.awt.image包提供了基本的绘制图像的能力,我们可以在内存中绘制好需要的图形,然后编码成jpeg或其他图像格式,最后发送相应给浏览器即可。下面是使用Servlet动态创建图像的详细步骤:

  1.创建BufferedImage对象,该对象存在内存中,负责保存绘制的图像;

  2.创建Graphics2D对象,该对象负责绘制所需的图像;

  3.当绘制完成后,调用com.sun.image.codec.jpeg包的JPEG编码器对其编码;

  4.最后将编码后的数据输出至HttpResponse即可。

  注意com.sun.image.codec.jpeg包位于JDK目录的rt.jar包中,它不是公开的API,需要将rt.jar复制到web应用程序的WEB-INF/lib下。

  我们先创建一个最简单的Servlet:

  public class CreateImageServlet extends HttpServlet {

  protected void doGet(HttpServletRequest request, HttpServletResponse response)

  throws ServletException, IOException

  {

  response.setContentType("image/jpeg").

  }

  }

  我们首先设置了response的contentType为image/jpeg,这样浏览器就可以正确识别。

  然后,创建一个大小为100x100的BufferedImage对象,准备绘图:

  int width = 100.

  int height = 100.

  BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB).

  接着,BufferedImage对象中获取Graphics2D对象并绘图:

  Graphics2D g = bi.createGraphics(). // 创建Graphics2D对象


相关文章


java匿名内部类的使用场景(1)计算机等级考试
在Java中调用Perl脚本计算机等级考试
java多线程控制台聊天室计算机等级考试
java多线程按顺序读数据计算机等级考试
使用JavaServlet动态生成图片计算机等级考试
Java多线程实现异步调用计算机等级考试
JDBC调用MySQL5存储过程计算机等级考试
JS中cookie的介绍和操作计算机等级考试
Java生成UUID通用唯一识别码计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛