java基础教程之图片验证码
图片验证码 -- 拓薪教育
第一章:图片验证码的作用
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: