学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> JSP >> JSP技巧:发送动态图像


JSP技巧:发送动态图像


  你是否曾经想过从jsp页面(或者servlet)中发送动态产生的图像?这篇技巧告诉你如何做。要运行这里的代码,你需要一个Tomcat或者其他支持JSP 1.1的web服务器。

  当一个web页面带有image/jpeg (或者其他的图像格式)的MIME类型被发送时,你的浏览器将那个返回结果当作一个图像,然后浏览器显示图像,作为页面的一部分或者完全作为图像自身。要为你的jsp页面设置MIME类型,你需要设置页面的contentType属性:

<%@ page contentType="image/jpeg" ... %>
然后你需要创建一个BufferedImage绘制你的动态图像:
BufferedImage image = new BufferedImage(width,
height, BufferedImage.TYPE_INT_RGB);

  创建完一个BufferedImage后,你需要得到图形环境进行绘制,一个Graphics或者Graphics2D对象:

Graphics g = image.getGraphics();
// or
Graphics2d g2d = image.createGraphics();

  从现在起你就可以绘制图像内容了。对图形环境绘制就会画到BufferedImage。最开始这个图像都是黑色的,因此用你希望的背景颜色填充图像是一个不错的主意,然后,当你完成图像的绘制,你需要dispose图形环境:

g.dispose();
// or
g2d.dispose();

  一旦完成图像的绘制,你在response中返回那个图像。你可以使用非标准的com.sun.image.codec.jpeg包中的JPEGImageEncoder类编码图像,或者如果你使用JDK1.4,你可以使用标准的ImageIO类。在使用JPEGImageEncoder时有一个技巧,你必须从ServletResponse取来ServletOutputStream而不能使用隐含的JSP输出变量out。

ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
// or
ImageIO.write(image, "JPEG", out);

  这里有一个从所有的可能方案中(例如g.dispose();或者g2d.dispose();)选取的一个完整的范例.这个例子使用Graphics对象绘制一个随机的多边形,图像通过JPEGImageEncoder绘制,你可以自由设置多边形的顶点数得到更复杂的形状,换言之,有更多顶点和边。

  要运行这个范例,将从"<%@"到最后一个"%>"之间的jsp代码放到一个名为image.jsp的文件中,将那个文件放到你的web服务器可以找到的地方,在使用Tomcat的情况下是ROOT目录,启动Tomcat,访问http://localhost:8080/image.jsp.

<%@ page contentType="image/jpeg"
import="java.awt.*,java.awt.image.*,
com.sun.image.codec.jpeg.*,java.util.*"
%>
<%
// Create image
int width=200, height=200;
BufferedImage image = new BufferedImage(width,
height, BufferedImage.TYPE_INT_RGB);
// Get drawing context
Graphics g = image.getGraphics();
// Fill background
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
// Create random polygon
Polygon poly = new Polygon();
Random random = new Random();
for (int i=0; i < 5; i++) {
poly.addPoint(random.nextInt(width),
random.nextInt(height));
}
// Fill polygon
g.setColor(Color.cyan);
g.fillPolygon(poly);
// Dispose context
g.dispose();
// Send back image
ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
%>


技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

先试一下再说...
游客 发表于2008-3-29 8:36:40
对"JSP技巧:发送动态图像"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 JSP技巧:发送动态图像 相关内容
Google搜索中 JSP技巧:发送动态图像 相关内容
雅虎中 JSP技巧:发送动态图像 相关内容
Sogou搜索中 JSP技巧:发送动态图像 相关内容

相关软件 最新回复帖子:

·JSP技巧:发送动态图像
·Visual Basic编程中的雕虫小技五则
·AutoCAD三维造型实例:制作直线沙发
·3DsMAX仿照室内照片做三维虚拟现实模型
·Coreldraw中如何提取位图色彩值?
·如何在CorelDraw中让渐变效果更平滑?
·JBuilder2005实战JSP之登录页面
·AutoCAD初学者如何有效提高绘图速度
·用Photoshop动作快捷键排版制作证件照
·QQ被盗 选择哪些途径申诉才能成功?


  相关软件 JSP技巧:发送动态图像相关文章
JSP调用JavaBean在网页上动态生成柱状图 JSP如何连接DB2数据库
JSP设计模式 关于JSP中文问题的解决方法
利用RamdonAccessFile来实现文件的追加 也谈JSP与XML的交互
JSP的login程序代码 Jsp如何实现网页的重定向
用户登录验证的JSP完整程序 JSP安全性初探
JSP与Java Mail API JSP与XML的结合
在JSP中操作文件 JSP与EJB
全面解析JDBC JSP与Servlet
JSP与JavaBean 其他常见JSP开发环境
如何在Linux下建立JSP开发环境? Tomcat环境的建立