zoukankan      html  css  js  c++  java
  • 验证码的旋转与放缩代码

    public void demo2() throws IOException {
    int w = 60;
    int h = 30;
    BufferedImage img = new BufferedImage(w, h,BufferedImage.TYPE_INT_RGB );
    Graphics g = img.getGraphics();

    //背景
    g.setColor(Color.WHITE);
    g.fillRect(0, 0, w, h);
    //字体
    g.setFont(new Font("aa", Font.BOLD, 18));
    //输出验证码: 4个0~9之间的随机整数
    Random r = new Random();
    for(int i=0;i<4;i++){
    int a = r.nextInt(10);
    int y = 10+r.nextInt(20);//上下位置:10~30
    Color c = new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255));
    g.setColor(c);
    g.drawString(""+a, i*16, y);
    }
    //画干扰线
    for(int i=0;i<20;i++){
    Color c = new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255));
    g.setColor(c);
    g.drawLine(r.nextInt(w), r.nextInt(h), r.nextInt(w), r.nextInt(h));
    }

    //把图形刷到img对象中
    g.dispose();//相当于IO中的close()方法带动flush()
    ImageIO.write(img, "JPEG", new FileOutputStream("d:/a/hello.jpg"));
    }

    }

    ----------------------------------------------------------------

    @Test
    public void demo3() throws IOException {
    int w = 80;
    int h = 30;
    BufferedImage img = new BufferedImage(w, h,BufferedImage.TYPE_INT_RGB );
    Graphics g = img.getGraphics();
    Graphics2D g2d = ( Graphics2D )g; // ※※※
    //字体
    g2d.setFont(new Font("aa", Font.BOLD, 18));

    //背景
    g2d.setColor(Color.WHITE);
    g2d.fillRect(0, 0, w, h);


    //输出验证码: 4个0~9之间的随机整数
    Random r = new Random();
    for(int i=0;i<4;i++){
    int a = r.nextInt(10);
    int y = 10+r.nextInt(20);//上下位置:10~30
    Color c = new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255));
    g2d.setColor(c);

    //旋转和放缩※※※
    AffineTransform tx = new AffineTransform();
    tx.rotate(r.nextDouble(), i*16, y-5);
    tx.scale(0.6+r.nextDouble(), 0.6+r.nextDouble());
    g2d.setTransform(tx);

    g2d.drawString(""+a, i*16, y);
    }
    //画干扰线
    for(int i=0;i<10;i++){
    Color c = new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255));
    g2d.setColor(c);
    g2d.drawLine(r.nextInt(w), r.nextInt(h), r.nextInt(w), r.nextInt(h));
    }

    //把图形刷到img对象中
    g2d.dispose();//相当于IO中的close()方法带动flush()
    ImageIO.write(img, "JPEG", new FileOutputStream("d:/a/hello.jpg"));
    }

    }

  • 相关阅读:
    移动应用专项测试
    MAC连接安卓手机通过adb指令安装apk
    Git GUI可视化操作教程
    nestjs中typeorm进行事物操作
    vue-element-admin 实现动态路由(从后台查询出菜单列表绑定侧边栏)
    el-form 表单校验
    vscode设置VUE eslint开发环境
    .netcore signalR 实时消息推送
    psexec局域网执行远程命令
    Asp.Net跨平台 Jexus 5.8.1 独立版
  • 原文地址:https://www.cnblogs.com/1314wamm/p/5908679.html
Copyright © 2011-2022 走看看