Java画出验证码图片

package com;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
//验证码
public class Imageyan {
    public static void main(String[] args) throws IOException {
        int id = 4;
        int w = id*50;
        int h = 80;
        BufferedImage buf = new BufferedImage(w,h,1);
        Graphics g = buf.getGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0,0,w,h);
        Random ran = new Random();
        //设置字
        Font font = new Font("宋体",Font.PLAIN,40);
        g.setFont(font);
        for(int i = 0;i < id;i++) {
            Color color = new Color(ran.nextInt(255),ran.nextInt(255),ran.nextInt(255),255);
            g.setColor(color);
            String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
            String str = "";
            str = chars.charAt(ran.nextInt(chars.length()))+"";
            int x = 20 + i * 45;
            int y = 50;
            g.drawString(str, x, y);
        }
        //添加干扰文字
        for(int i = 0;i < id;i++) {
            Color color = new Color(ran.nextInt(255),ran.nextInt(255),ran.nextInt(255),100);
            g.setColor(color);
            String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
            String str = "";
            str = chars.charAt(ran.nextInt(chars.length()))+"";
            g.drawString(str, ran.nextInt(w),ran.nextInt(h));
        }
        //添加线条
        for (int a = 0; a < 30; a++) {
            Color color = new Color(ran.nextInt(255),ran.nextInt(255),ran.nextInt(255),ran.nextInt(255));
            g.setColor(color);
            g.drawLine(ran.nextInt(w),ran.nextInt(w),ran.nextInt(w),ran.nextInt(w));
        }
        //添加弧线
        for (int a = 0; a < 30; a++) {
            Color color = new Color(ran.nextInt(255),ran.nextInt(255),ran.nextInt(255),ran.nextInt(255));
            g.setColor(color);
            g.drawArc(ran.nextInt(w),ran.nextInt(w),ran.nextInt(w),ran.nextInt(w),ran.nextInt(360),ran.nextInt(360));
        }

        g.dispose();
        ImageIO.write(buf,"jpg",new File("d:/img/five.jpg"));
    }
}
原文地址:https://www.cnblogs.com/zxwen/p/9526446.html