千家信息网

jsp如何传送动态图片

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,jsp如何传送动态图片,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。你是否曾经想过从jsp页面(或者servlet)中发
千家信息网最后更新 2026年11月02日jsp如何传送动态图片

jsp如何传送动态图片,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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

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


  然后你需要创建一个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);
  %>[@more@]

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

图像 页面 动态 图形 环境 代码 内容 多边形 对象 技巧 文件 更多 服务器 标准 浏览器 类型 范例 顶点 帮助 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 广州百单互联网科技有限公司 互联网科技公司税收优惠 上海互联网科技有限公司 北京互联网科技有限公司 金融科技与互联网金融 互联网科技公司发展 猪兼强互联网科技 奔汉互联网科技 互联网科技大会案例 科技大学互联网专业好不好 金融科技与互联网金融相同和不同 科技类公司包括互联网吗 互联网科技大赛获奖感言 2021互联网科技公司排名 郑州欣桑互联网科技有限公司 长沙渺峰互联网科技有限公司 绵阳真晨互联网科技有限公司 上海互联网科技园景观 互联网科技自媒体灵感 科技和互联网公司 互联网科技卖菜 互联网科技公司名称 卓越科技互联网 招聘 互联网科技公司需要的职位 互联网软件和科技 杭州壁岐互联网科技有限公司 天津腾达互联网科技有限公司 21世纪互联网科技成就 浙南科技城互联网大厦招聘
0