您的位置:首页 > 编程语言 > Java开发

使用Swing制作java验证码

2017-01-07 16:41 651 查看
 
package com.yw.test01;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;
import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class PictureCheckCode {

public PictureCheckCode() {
super();
}

public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setLayout(new FlowLayout());
PictureCheckCode pcc = new PictureCheckCode();
ImageIcon image=new ImageIcon(pcc.service());
JLabel label1 = new JLabel("<html><u>Label下划线</u><html>");
jf.add(label1);
JLabel label2 = new JLabel(image);
jf.add(label2);
jf.setVisible(true);
jf.setSize(300, 300);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

/* 该方法主要作用是获得随机生成的颜色 */
public Color getRandColor(int s, int e) {
Random random = new Random();
if (s > 255)
s = 255;
if (e > 255)
e = 255;
int r, g, b;
r = s + random.nextInt(e - s); // 随机生成RGB颜色中的r值
g = s + random.nextInt(e - s); // 随机生成RGB颜色中的g值
b = s + random.nextInt(e - s); // 随机生成RGB颜色中的b值
return new Color(r, g, b);
}

public BufferedImage service() {

int width = 100, height = 50; // 指定生成验证码的宽度和高度
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB); // 创建BufferedImage对象,其作用相当于一图片
Graphics g = image.getGraphics(); // 创建Graphics对象,其作用相当于画笔
Graphics2D g2d = (Graphics2D) g; // 创建Grapchics2D对象
Random random = new Random();
Font mfont = new Font("test", Font.BOLD, 20); // 定义字体样式
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height); // 绘制背景
g.setFont(mfont); // 设置字体

g.setColor(getRandColor(180, 200));

// 绘制20条颜色和位置全部为随机产生的线条,该线条为2f
for (int i = 0; i < 20; i++) {
int x = random.nextInt(width - 1);
int y = random.nextInt(height - 1);
int x1 = random.nextInt(6) + 1;
int y1 = random.nextInt(12) + 1;

Line2D line = new Line2D.Double(x, y, x + x1, y + y1);

g2d.draw(line); // 绘制直线
}
g.setColor(getRandColor(80, 200));
g2d.rotate(30*3.14/180, 30, 30);
g2d.drawString("abcd", 20, 20);

g.dispose(); // 释放g所占用的系统资源

return image;
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: