|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
那这个对象有什么意义?现在很多用javabean的人就不能保证对象有完整的意义,不成熟的使用模式等导致代码疯狂增长,调试维护的时间要得多得多。在说性能之前,先说说你这个比较的来历。据说微软为了证明。net比java好。js|静态
你是不是已经想过从jsp页面(大概servlet)中发送静态发生的图象?这篇技能告知你怎样做。要运转这里的代码,你必要一个Tomcat大概其他撑持JSP1.1的web服务器。
当一个web页面带有image/jpeg(大概其他的图象格局)的MIME范例被发送时,你的扫瞄器将谁人前往了局看成一个图象,然后扫瞄器显现图象,作为页面的一部分大概完整作为图象本身。要为你的jsp页面设置MIME范例,你必要设置页面的contentType属性:
然后你必要创立一个BufferedImage绘制你的静态图象:
BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
创立完一个BufferedImage后,你必要失掉图形情况举行绘制,一个Graphics大概Graphics2D对象:
Graphicsg=image.getGraphics();
//or
Graphics2dg2d=image.createGraphics();
从如今起你就能够绘制图象内容了。对图形情况绘制就会画到BufferedImage。最入手下手这个图象都是玄色的,因而用你但愿的背景色彩添补图象是一个不错的主张,然后,当你完成图象的绘制,你必要dispose图形情况:
g.dispose();
//or
g2d.dispose();
一旦完成图象的绘制,你在response中前往谁人图象。你可使用非尺度的com.sun.image.codec.jpeg包中的JPEGImageEncoder类编码图象,大概假如你利用JDK1.4,你可使用尺度的ImageIO类。在利用JPEGImageEncoder时有一个技能,你必需从ServletResponse取来ServletOutputStream而不克不及利用隐含的JSP输入变量out。
ServletOutputStreamsos=response.getOutputStream();
JPEGImageEncoderencoder=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
<%@pagecontentType="image/jpeg"
import="java.awt.*,java.awt.image.*,
com.sun.image.codec.jpeg.*,java.util.*"
%>
<%
//Createimage
intwidth=200,height=200;
BufferedImageimage=newBufferedImage(width,
height,BufferedImage.TYPE_INT_RGB);
//Getdrawingcontext
Graphicsg=image.getGraphics();
//Fillbackground
g.setColor(Color.white);
g.fillRect(0,0,width,height);
//Createrandompolygon
Polygonpoly=newPolygon();
Randomrandom=newRandom();
for(inti=0;i<5;i++){
poly.addPoint(random.nextInt(width),
random.nextInt(height));
}
//Fillpolygon
g.setColor(Color.cyan);
g.fillPolygon(poly);
//Disposecontext
g.dispose();
//Sendbackimage
ServletOutputStreamsos=response.getOutputStream();
JPEGImageEncoderencoder=
JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
%>
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的 |
|