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:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

renlianggee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值