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

下载本文档

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

文档简介

网络编程生成图像第1页,共16页,2023年,2月20日,星期六本章要点

在服务器端产生一个二进制的图像数据,并传给浏览器显示的技术。HTTP协议中的MIME类型Servlet向客户端返回MIME类型(图像)在服务器端生成统计图形将图形转化成JPEG格式生成动态图形以及传输图形实例(三种方式) 见Word文档第2页,共16页,2023年,2月20日,星期六Java中面向Web的图形

产生图形有两种方式:(1)在客户端Applet中产生图形。 要求客户端支持Applet。动态改变显示在客户端的图形。--地理监控、联网游戏(2)在服务器端产生图形。 简单,可传递参数内容,动态地从服务器上产生图形,缺点是图形一经下载不能再被改变。--网上报表系统第3页,共16页,2023年,2月20日,星期六HTTP协议中的MIME类型MIME(MultipurposeInternetMailExtension)全称为多用途网际邮件扩展。使用Internet邮件标准传输多媒体数据。服务器端向客户端发送每个文件时,在头部包含了描述文件类型的信息。MIME的形式:类型/子类型通用文件组类型文件组的一个具体类型第4页,共16页,2023年,2月20日,星期六

例如:Image/jpeg:客户端程序把收到的数据作为图形显示。Image/gif:作为gif格式的图形显示。Audio/aiff:作为音频流来播放。Application/msword:作为一个Word文档来打开。Text/html:表示给浏览器的是一个HTML网页。MIME的类型和子类型是在Content-type头域中描述。P36表4-1常用的MIME中有关图形和声音的类型和子类型第5页,共16页,2023年,2月20日,星期六Servlet向客户端返回MIME类型 通过响应对象的setContentType(String)方法来指定MIME类型:staticfinalprivateStringCONTENT_TYPE="image/jpeg";response.setContentType(CONTENT_TYPE);//指定MIME类型响应的MIME类型只能指定一次。当指定非文本的MIME类型后,不能再指定文本类型。第6页,共16页,2023年,2月20日,星期六Servlet向客户端返回二进制数据不能使用针对文本的PrintWrite对象。<imgid=chartsrc=“servlet/ImageServlet?ChartType=Bar”width=300height=300>ServletAPI中提供了响应对象的getOutputStream()返回一个OutputStream对象,利用该对象写入字节数组,将图像传给客户端。第7页,共16页,2023年,2月20日,星期六操作前先把图像流转化成二进制数组ByteArrayOutputStreambyteOut=newByteArrayOutputStream();OutputStreamOut=res.getOutputStream();encoder=JPEGCodec.createJPEGEncoder(byteOut);encoder.encode(img);byte[]buf=byteOut.toByteArray();byteOut.close();res.setContentLength(buf.length);Out.write(buf);Out.close();第8页,共16页,2023年,2月20日,星期六在服务器端生成统计图形相关类:设计模式为标准的MVC模式。(1)数据类----所有统计图形的数据源;(MODEL)(2)绘图类----根据数据类生成具体的统计图形;(VIEW)(3)控制类----负责从客户端得到生成统计数据所需的参数,以及将产生的图形(GIF或JPEG)传送到客户端。(Control)该类一般由Servlet完成。第9页,共16页,2023年,2月20日,星期六Sun公司没有提供Image或BufferedImage编码成GIF图形的类。

在非标准Java类库中,提供了将BufferedImage编码成JPEG图形的实用类。例中用Sun公司的com.sun.image.codec.jpeg包产生JPEG图形。GIF编码的工具包:/java/下载。第10页,共16页,2023年,2月20日,星期六产生图形

(1)在Java中将图形绘制出来。

绘图的API在Java.awt.*包中。一般图像用Image对象表示,对图形进行编码需要BufferedImage对象,该对象是Image的子类。第11页,共16页,2023年,2月20日,星期六//建立BufferedImage图形对象protectedBufferedImagecreateImage(intw,inth,Colorbg){BufferedImageimg=newBufferedImage(w,h,BufferedImage.TYPE_INT_RGB);Graphicsg=img.getGraphics();//取得图形环境g.setColor(bg);g.fillRect(0,0,w,h);returnimg;}静态常量TYPE_INT_RGB是产生JPEG图形必须的。可在该环境上绘图第12页,共16页,2023年,2月20日,星期六产生条形图

主要利用两种绘图方法:voiddrawRect(intx,inty,intwidth,intheight);voidfillRect(intx,inty,intwidth,intheight);voidsetColor(Colorc);voiddrawString(Strings,intx,inty);Java的图形环境提供了一系列的绘图方法。例中绘制条形图,使用数组DataArray作为数据源。 intDataArray[]={120,100,60,200};第13页,共16页,2023年,2月20日,星期六产生饼形图

使用Graphics对象的两种方法:voidfillArc(intx,inty,intwidth,intheight,intstartAngle,intangle);//填充扇形区域voiddrawLine(intx1,intx2,inty1,inty2); //用来绘制每个扇形区域的边缘例中绘制条形图,仍使用数组DataArray作为数据源。第14页,共16页,2023年,2月20日,星期六将绘制的图形转化成JPEG格式

创建了Image或者BufferedImage对象,并绘制好图形后,需要将其转化成GIF、JPEG或MIME规定的其它图形类型,才能在浏览器中显示。

转换后buf字节数组中存储了JPEG格式的图形信息,可保存成文件,也可发送到浏览器显示。第15页,共16页,2023年,2月20日,星期六转换成JPEG格式的代码

ByteArrayOutputStreambyteOut=newByteArrayOutputS

温馨提示

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

评论

0/150

提交评论