操纵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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |