当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

操纵Java Servlet动态生成图片[Java编程]

赞助商链接



  本文“操纵Java Servlet动态生成图片[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在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对象
// 填充后台为白色:
g.setBackground(Color.BLUE);
g.clearRect(0, 0, width, height);
// 设置前风光:
g.setColor(Color.RED);
// 开始画图:
g.drawLine(0, 0, 99, 99); // 绘制一条直线
// 画图完成,释放资源:
g.dispose();
bi.flush();

然后,对BufferedImage举行JPEG编码:

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
param.setQuality(1.0f, false);
encoder.setJPEGEncodeParam(param);
try {
  encoder.encode(bi);
}
catch(IOException ioe) {
  ioe.printStackTrace();
}


  以上是“操纵Java Servlet动态生成图片[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 操纵javascript得到浏览器中的星号密码
  • 操纵Java运算符
  • 传送和操纵Java对象
  • 操纵Java技术将Atom转换为RDF
  • 操纵java成立躲藏文件
  • <b>操纵Java实现网络传输数据压缩的实例</b>
  • 操纵Java来实现域名和IP地址转换的操作
  • <b>操纵Java实现一个简单的递归算法的实例</b>
  • <b>操纵Java编写网络通信程序</b>
  • 操纵Java Applet播放声音文件
  • 操纵Java语言举行Unicode代理编程
  • 操纵Java3D实现三维图象
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .