ImageIO.read()是否从流中读取了数据,并生成了缓存图像?
帮帮我吧,
帮帮我吧,
解决方案 »
- struts logic标签怎么换成spring mvc的标签
- 如何判定分布式系统中对象属于同一个类
- 不报错 又不出结果 最气人
- String.getByte("utf-8")和new String(byte[],"utf-8")各是什么意思?
- 如何动态创建一个java object?
- java或javascript读写word中的图片问题
- 用新版sun虚拟机,为什么找不到类了?
- 用Jbuider需要电脑什么配置?
- 为什么application中菜单的子菜单总被其他控件覆盖,如何解决?
- swing的JTabbedPane 标签样式问题
- java讨论新建的线程到底什么时候获得cup的使用权
- 急!一个急于解决的读写问题。大家快来帮帮菜鸟吧!
此类依靠 Raster 的数据获取方法、数据设置方法,以及 ColorModel 的颜色特征化方法。—— 摘自jdk1.6,本人没用过。
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?