页面(或者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"