网络编程生成图像.ppt_第1页
网络编程生成图像.ppt_第2页
网络编程生成图像.ppt_第3页
网络编程生成图像.ppt_第4页
网络编程生成图像.ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 6 章,生成图像,本章要点,在服务器端产生一个二进制的图像数据,并传给浏览器显示的技术。 HTTP协议中的MIME类型 Servlet向客户端返回MIME类型(图像) 在服务器端生成统计图形 将图形转化成JPEG格式 生成动态图形以及传输图形实例(三种方式) 见Word文档,Java中面向Web的图形,产生图形有两种方式: (1)在客户端Applet中产生图形。 要求客户端支持Applet。动态改变显示在客户端的图形。-地理监控、联网游戏 (2)在服务器端产生图形。 简单,可传递参数内容,动态地从服务器上产生图形,缺点是图形一经下载不能再被改变。-网上报表系统,HTTP协议中的MIME类型

2、,MIME(Multipurpose Internet Mail Extension)全称为多用途网际邮件扩展。 使用Internet邮件标准传输多媒体数据。 服务器端向客户端发送每个文件时,在头部包含了描述文件类型的信息。 MIME的形式:类型 / 子类型,通用文件组类型,文件组的一个具体类型,例如: Image/jpeg:客户端程序把收到的数据作为图形显示。 Image/gif:作为gif格式的图形显示。 Audio/aiff:作为音频流来播放。 Application/msword:作为一个Word文档来打开。 Text/html:表示给浏览器的是一个HTML网页。 MIME的类型和子类

3、型是在Content-type头域中描述。 P36 表4-1 常用的MIME中有关图形和声音的类型和子类型,Servlet向客户端返回MIME类型,通过响应对象的setContentType(String)方法来指定MIME类型: static final private String CONTENT_TYPE = image/jpeg; response.setContentType(CONTENT_TYPE); / 指定MIME类型 响应的MIME类型只能指定一次。当指定非文本的MIME类型后,不能再指定文本类型。,Servlet向客户端返回二进制数据,不能使用针对文本的PrintWrit

4、e对象。 Servlet API中提供了响应对象的getOutputStream()返回一个OutputStream对象,利用该对象写入字节数组,将图像传给客户端。,操作前先把图像流转化成二进制数组 ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); OutputStream Out = res.getOutputStream(); encoder = JPEGCodec.createJPEGEncoder(byteOut); encoder .encode(img); byte buf = byteOut.toByteAr

5、ray(); byteOut.close(); res.setContentLength(buf.length); Out.write(buf); Out.close();,在服务器端生成统计图形,相关类:设计模式为标准的MVC模式。 (1)数据类-所有统计图形的数据源;(MODEL) (2)绘图类-根据数据类生成具体的统计图形;(VIEW) (3)控制类-负责从客户端得到生成统计数据所需的参数,以及将产生的图形(GIF或JPEG)传送到客户端。(Control)该类一般由Servlet完成。,Sun公司没有提供Image或BufferedImage编码成GIF图形的类。 在非标准Java类库

6、中,提供了将BufferedImage编码成JPEG图形的实用类。 例中用Sun公司的com.sun.image.codec.jpeg包产生JPEG图形。 GIF编码的工具包: 下载。,产生图形,(1)在Java中将图形绘制出来。 绘图的API在Java.awt.*包中。一般图像用Image对象表示,对图形进行编码需要BufferedImage对象,该对象是Image的子类。,/建立BufferedImage图形对象 protected BufferedImage createImage(int w, int h, Color bg) BufferedImage img = new Buffe

7、redImage(w, h, BufferedImage.TYPE_INT_RGB); Graphics g = img.getGraphics(); /取得图形环境 g.setColor(bg); g.fillRect(0,0,w,h); return img; 静态常量TYPE_INT_RGB是产生JPEG图形必须的。,可在该环境上绘图,产生条形图,主要利用两种绘图方法: void drawRect(int x, int y, int width, int height); void fillRect(int x, int y, int width, int height); void s

8、etColor(Color c); void drawString(String s, int x, int y); Java 的图形环境提供了一系列的绘图方法。 例中绘制条形图,使用数组DataArray作为数据源。 int DataArray = 120, 100, 60, 200;,产生饼形图,使用Graphics对象的两种方法: void fillArc(int x, int y, int width, int height, int startAngle, int angle); / 填充扇形区域 void drawLine(int x1, int x2, int y1, int y2); / 用来绘制每个扇形区域的边缘 例中绘制条形图,仍使用数组DataArray作为数据源。,将绘制的图形转化成JPEG格式,创建了Image或者BufferedImage对象,并绘制好图形后,需要将其转化成GIF、JPEG或MIME规定的其它图形类型,才能在浏览器中显示。 转换后buf字节数组中存储了JPEG格式的图形信息,可保存成文件,也可发送到浏览器显示。,转换成JPEG格式的代码,ByteArrayOutputStream byteOut = new ByteArrayOut

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论