imageio:ImageIO.read?来源: 发布时间:星期四, 2008年11月20日 浏览:26次 评论:0
ImageIO.read()是否从流中读取了数据,并生成了缓存图像?
帮帮我吧,
返回一个BufferedImage.
BufferedImage 子类描述具有可访问图像数据缓冲区的 Image.BufferedImage 由图像数据的 ColorModel 和 Raster 组成.Raster 的 SampleModel 中 band 的数量和类型必须与 ColorModel 所要求的数量和类型相匹配,以表示其颜色和 alpha 分量.所有 BufferedImage 对象的左上角坐标都为 (0, 0).因此,用来构造 BufferedImage 的任何 Raster 都必须满足:minX=0 且 minY=0. 此类依靠 Raster 的数据获取Method、数据设置Method,以及 ColorModel 的颜色特征化Method. —— 摘自jdk1.6,本人没用过.
package com.rand;
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.*; import java.awt.image.BufferedImage; import java.util.Random; import javax.imageio.ImageIO; /** * @date 2008-5-4 * @author East(张栋芳) * @图片验证码 */ public class RandomCodeServlet extends HttpServlet{ private int width = 60;//验证码的宽度 private int height = 20;//验证码的高度 protected void service(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{ BufferedImage buffImg = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR); Graphics2D g = buffImg.createGraphics(); //产生Random Random random = new Random(); g.setColor(Color.WHITE); g.fillRect(0,0,width,height); //字体 Font font = new Font("Dialog",Font.PLAIN,18); g.setFont(font); //边框 g.setColor(Color.BLACK); g.drawRect(0,0,width-1,height-1); //产生160条干扰线,图像中的认证码,不被看到 g.setColor(Color.GRAY); for(int i=0;i <160;i++){ int x = random.nextInt(width); int y = random.nextInt(height); int x1 = random.nextInt(12); int y1 = random.nextInt(12); g.drawLine(x,y,x1,y1); } StringBuffer randomCode = new StringBuffer();//保存验证码 int red = 0,green = 0,blue = 0; for(int i = 0;i < 4;i++){ String strRand=String.valueOf(random.nextInt(10)); //Color red = random.nextInt(110); green = random.nextInt(50); blue = random.nextInt(50); //set Color g.setColor(new Color(red,green,blue)); g.drawString(strRand,13*i+6,16); randomCode.append(strRand);//保存验证码 } //搞验证码 到SESSION中去 HttpSession session=req.getSession(); session.setAttribute("randdomCode",randomCode.toString()); //禁止图像缓存 resp.setHeader("Pragma","no-cache"); resp.setHeader("Cache-Control","no-cache"); resp.setDateHeader("Expires",0); resp.setContentType("image/jpeg"); //将图像输出到Servlet输出 流中 ServletOutputStream sos=resp.getOutputStream(); ImageIO.write(buffImg,"jpeg",sos); sos.close(); } } 看看.对你有点帮助.......... 是!流中的数据需要采用 ImageIO 支持的文件格式组织(例如 JPEG 格式)!小菜打算怎么用读出的 BufferedImage?
OutputStream sos=response.getOutputStream();
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(sos); encoder.encode(image); 0
相关文章
读者评论
发表评论 |

