java基础教程之图片验证码

    xiaoxiao2022-07-12  110

    图片验证码 -- 拓薪教育

    第一章:图片验证码的作用

    1. 验证码的种类

    图片验证码,拼图效果验证码,数字计算图片验证码,勾选汉字验证码等。

    2. 验证码的作用

    验证码作为一种人机识别手段,其终极目的,就是区分正常人和机器的操作。

    区分人机行为的作用不言而喻。互联行为的注册、登录、发帖、领优惠券、投票等等应用场景,都有被机器刷造成

    各类损失的风险,如果不对各类机器垃圾的行为加以防范,灌水内容、垃圾注册、恶意登录、刷票、撞库、活动作

    弊、垃圾广告、爬虫、羊毛党等用户行为一旦发生,将对产品自身发展、用户体验造成极大的影响。

    第二章:图片验证码编程

    1. Java编写图片验证码

     

    package cn.tx.servlet;

    import javax.imageio.ImageIO;

    import java.awt.*;

    import java.awt.image.BufferedImage;

    import java.io.File;

    import java.io.IOException;

    import java.util.Random;

    /**

    * 拓薪教育:樱木老师

    * 腾讯课堂搜索:拓薪教育

    * 腾讯课堂直播间地址:https://ke.qq.com/course/149432

    * idea免费视频学习地址:https://ke.qq.com/course/363570

    * 加入QQ群领取免费资料和视频:QQ群号 344379612

    */

    public class Demo1 {

    public static void main(String[] args) throws IOException {

    int width = 150;

    int height = 50;

    BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

    // 获取到画笔对象

    // Graphics g = image.getGraphics();

    // 向下转型,子类

    Graphics2D g = (Graphics2D) image.getGraphics();

    // 设置颜色

    g.setColor(Color.GRAY);

    // 画矩形

    g.fillRect(0,0,width,height);

    // 设置颜色

    g.setColor(Color.yellow);

    // 设置字体大小

    g.setFont(new Font("楷体",Font.BOLD,25));

    String words = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

    // 随机

    Random random = new Random();

    int x = 30;

    int y = 30;

    // 循环

    for (int i = 0; i < 4; i++) {

    int index = random.nextInt(words.length());

    char c = words.charAt(index);

    // 弧度的公式 = 角度 * PI /180;

    // 先获取到 正负 30的角度 ‐30  30 之间

    int jiaodu = random.nextInt(60) 30;

    // 计算弧度

    double hudu = jiaodu * Math.PI / 180;

    // 设置弧度

    g.rotate(hudu,x,y);

    g.drawString(c+"",x, y);

    // 把弧度修正

    g.rotate(hudu,x,y);

    x += 30;

    }

    // 2点确定一条直线

    int x1,x2,y1,y2;

    // 画干扰线

    g.setColor(Color.green);

    for (int i = 0; i < 4; i++) {

    x1 = random.nextInt(width);

    x2 = random.nextInt(width);

    y1 = random.nextInt(height);

    y2 = random.nextInt(height);

    // 画直线

    g.drawLine(x1,y1,x2,y2);

     

    2. 验证码生成的工具类

    今天的资料中提供验证码生成的工具类,方便以后大家使用。

    }

    // 把图片输出到demo文件夹中

    ImageIO.write(image,"jpg",new File("C:\\demo\\aaa.jpg"));

    }

    }

    根据本人多年从业以及学习经验,录制了一套最新的Java精讲视频教程,如果你现在也在学习Java,在入门学习Java的过程当中缺乏系统的学习教程,你可以加群654631948领取下学习资料,面试题,开发工具等,群里有资深java老师做答疑,每天也会有基础部分及架构的直播课,也可以加我的微信renlliang2013做深入沟通。

    java基础教程:https://ke.qq.com/course/149432?tuin=57912c43

    Java分布式互联网架构/微服务/高性能/springboot/springcloud:

    https://ke.qq.com/course/179440?tuin=57912c43

    最新回复(0)