zoukankan      html  css  js  c++  java
  • 验证码的制作

    1.创建一个BufferedImage对象

      BufferedImage image = new BufferedImage(120,35,BufferedImage.TYPE_INT_RGB);

    2.由BufferedImage对象得出Graphics对象

      通过这个Graphics对象即可操作生成图片

    3.对这个Graphics对象进行设置处理

    ①设置背景颜色

    设置颜色    setColor();
    填充整个矩形  fillRect();

    ②设置边框

    设置边框颜色  setColor();
    画出边框    drawRect();

    ③画干扰线

    用for循环操作来画出多条干扰线

    也是先设置颜色  setColor();

    接着用 随机函数写出 起点的横纵坐标和终点横纵坐标

    调用drawLine方法进行画线

    ④写随机文字或数字

    同样也是先设置颜色

    再设置要验证的字

    再调用drawString方法

    如果是用数字的话,则用随机数函数即可,

    如果是想用文字的话,则要用到转义字符如 char ch = 'u8827'  'u5f46'这样利用随机的数字拼凑而成的Unicode码,由于某些字不一定所有人都认识,所以建议自己收集一些常用字的Unicode码。

    想让文字倾斜则需要将Graphic对象强转为drawString2D类型,再调用它的rotate方法

    我的代码如下

    for(int i = 1;i<=4;i++) {
    g.rotate(new Random().nextInt(30)*Math.PI/180,x,0);  //参数1:旋转的弧度,注意不是角度。参数2参数3:旋转基点 的xy坐标点。
    g.drawString(Integer.toString(new Random().nextInt(10)), x, 20);
    g.rotate(-1*new Random().nextInt(30)*Math.PI/180,x,0);  将角度旋转回来,不影响第二次旋转。
    x+=15;
    }

    PS : 设置不缓存图片

      response.setHeader("Pragma", "no-cache");

      response.setHeader("Cache-Control", "no-cache");

      response.setDateHeader("Expires", 0);

  • 相关阅读:
    HTML_严格模式与混杂模式
    不要和一种编程语言厮守终生:为工作正确选择(转)
    iOS开发编码建议与编程经验(转)
    UTF-8 和 GBK 的 NSString 相互转化的方法
    UICollectionView 总结
    UIViewController的生命周期及iOS程序执行顺序
    objective-c 中随机数的用法
    clipsToBounds 与 masksToBounds 的区别与联系
    网络请求 代码 系统自带类源码
    iOS CGRectGetMaxX/Y 使用
  • 原文地址:https://www.cnblogs.com/dreaminheart/p/9320812.html
Copyright © 2011-2022 走看看