生成验证码
来源:互联网 发布:淘宝达人v任务 编辑:程序博客网 时间:2024/04/29 18:33
public class BufferedImageDemo extends HttpServlet {private static final long serialVersionUID = 1L; private static final int WIDTH = 120; private static final int HEIGHT = 35;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//创建一张图片BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);//得到画笔Graphics g = image.getGraphics();//设置图片的额背景颜色setBackGround(g);//设置边框setBorder(g);//生成线条dawRandomLine(g);//生成汉字dawRandomNum((Graphics2D)g);//设置头 告诉浏览器以哪种格式显示数据response.setContentType("image/jpeg");//将图片写到页面ImageIO.write(image, "jpg", response.getOutputStream());}//设置图片背景颜色private void setBackGround(Graphics g) {//设置图片背景颜色为白色g.setColor(Color.WHITE);//填充图片g.fillRect(0, 0, WIDTH, HEIGHT);}//设置边框private void setBorder(Graphics g) {//设置边框颜色g.setColor(Color.BLUE);//将线条画到图片上g.drawRect(1, 1, WIDTH-2, HEIGHT-2);}//生成随机线条private void dawRandomLine(Graphics g) {//设置线条颜色g.setColor(Color.GREEN);//随机位置生成五个线条for(int i=0;i<5;i++){int x1 = new Random().nextInt(WIDTH);int y1= new Random().nextInt(HEIGHT);int x2 = new Random().nextInt(WIDTH);int y2= new Random().nextInt(HEIGHT);//在图片上画线条g.drawLine(x1, y1, x2, y2);}}//生成汉字private void dawRandomNum(Graphics2D g) throws IOException {//设置汉字颜色g.setColor(Color.BLACK);//设置字体,大小,格式g.setFont(new Font("宋体",Font.BOLD,20));//读取配置文件中的常用汉字String path = BufferedImageDemo.class.getClassLoader().getResource("chinese.properties").getPath();InputStream is = new FileInputStream(path);Properties p = new Properties();p.load(is);String base = p.getProperty("base");int x= 5; //生成4个汉字for(int i=0;i<4;i++){//随机生成汉字旋转角度 -30~+30之间int degree = new Random().nextInt()%30;//从常用汉字中随机找出一个汉字String ch = base.charAt(new Random().nextInt(base.length()))+"";//设置汉字旋转角度,这个方法只有Graphics2D中有g.rotate(degree*Math.PI/180, x, 25);//把汉字写到图片上g.drawString(ch, x, 25);//将角度恢复g.rotate(-degree*Math.PI/180, x, 25);//每个汉字之间隔30,再写下一个汉字x+=30;}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}}
0 0
- 验证码生成及验证
- 生成验证码并验证
- 验证码生成与验证
- C#生成验证码
- C#生成验证码
- 生成验证码
- 验证码生成
- 生成验证码
- JSP生成验证码
- 生成验证码
- 生成验证码
- 数字验证码生成
- 动态生成验证码
- 生成验证码(1)
- 生成验证码(2)
- c# 生成验证码
- 生成验证码图像
- 生成验证码
- 16A.Flag
- 狼文化的一点思考
- PLSQL中显式Cursor、隐式Cursor、动态Ref Cursor
- 代码之外--整型数据那点事
- ccf试题 数字排序
- 生成验证码
- 操作系统笔记(六)页面置换算法 FIFO法 LRU最近最久未使用法 CLOCK法 二次机会法
- This
- 程序员,别了校园入了江湖
- 守护进程&创建守护进程&fork一次和fork两次的区别
- DOS批处理高级教程(一) 批处理基础
- 树莓派学习笔记二:软件包安装
- 爬虫:抓取某年某月某日某地的天气信息
- 使用maven构建项目