Java 之验证码生成

 偷懒了,直接贴代码了

package cn.tx.demo1;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.nio.Buffer;
import java.util.Random;

public class ImageCode {
    //数组
    static String[] strs = {
            "a", "b", "c", "d", "e", "f", "g", "h",
            "i", "j", "k", "m", "n", "p", "q", "r",
            "s", "t", "u", "v", "w", "x", "y", "z",
            "2", "3", "4", "5", "6", "7", "8", "9"};

    public static void main(String[] args) throws Exception {
        //生成图片  图片上有随机字母+数字+干扰线
        //1.画板= 纸
        //2.笔
        //3.数据<--随机四个+字母+数字
        //4.通过笔画出数据到画板上
        //5.生成真正图片

        //定义图片的宽度
        int w = 150;
        //定义图片高度
        int h =50;
        //图片类型
        //int imageType = BufferedImage.TYPE_3BYTE_BGR;  常量写法
        //int imageType = 1;                              源码就是“1”

        //1.画板= 纸  JDK中提供的画板类   ctrl+p  快捷查看方法参数
        BufferedImage image = new BufferedImage(w,h,1);
        //大需求: 把图片颜色修改  图片默认为黑色

        //2.笔获取画笔的对象
        Graphics g = image.getGraphics();
        //给画笔设置颜色
        g.setColor(Color.yellow);
        //画填充矩形
        g.fillRect(0,0,w,h);

        //3.数据<--随机四个+字母+数字
        //for循环  循环四次  回车

        //重新设置颜色
        g.setColor(Color.red);
        //设置字体
        g.setFont(new Font("楷体",Font.PLAIN,25));

        Random random = new Random();

        int x =30;
        int y =30;

        for (int i = 0; i <4 ; i++) {
            //每循环一次取一个
            //num的值生成随机数 Math or Random

            int num =random.nextInt(strs.length);
            String str = strs[num];
            //每获取一个字符串 画上去
            g.drawString(str,x,y);
            //每画一次,把x的值变大
            x+=25;
        }
        g.setColor(Color.green);
        //4.画干扰线
        for (int i = 0; i < 10; i++) {
            int x1 = random.nextInt(30);
            int y1 =random.nextInt(50);

            int x2 =random.nextInt(30)+120; //加120 脱远
            int y2 = random.nextInt(50);

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


        //5.生成图片  把image生成到本地磁盘上
        ImageIO.write(image,"jpg",new File("D:\\dm\\dome\\yzm.jpg"));

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值